\r\n\r\n

このpowershellスクリプトを使用して、Windowsでファイルの暗号化を自動化します。

ファイルの暗号化・復号化は、1つの作業ビットになることがあります。しかし、powershell拡張機能を使えば、その作業を1行のコマンドに効率化することができます...

ファイルの暗号化、復号化は1ビットの作業で可能です。しかし、PowerShellの拡張機能を使えば、この処理を1行のコマンドで効率化することができます。そのために、Gpg4winとPowershellのモジュールをインストールする必要があります。スクリプトを使用することで、ファイルの暗号化・復号化を自動化することができます。

それでは、Windows 10でファイルをスクリプトで自動的に暗号化する方法を紹介します。

前提条件:インストール、モジュール、証明書

その前に、GPG4Winツールのインストールと設定が必要です。プロジェクトページにアクセスし、最新版をダウンロードする。(ツールのインストールや設定について案内が必要な場合は、こちらのPDFガイドをご利用ください)このモジュールでは、GPG4Winの対称型パスワード機能を使用します。

このPowershellモジュールは、キーペアではなく、暗号フレーズを使用してファイルの暗号化処理を行います。暗号の強さは、暗号文の強さに依存する。複雑なものを選んだほうがいい。LastPassや他のパスワードマネージャーを使って生成してください。最後に、インストールを完了し、Powershellモジュールに移動します。

Powershellモジュールは、関数のパッケージ化された集合体です。PSM1ファイル形式を使用しています。これらのファイルは、設定ファイルのModulesディレクトリに保存してください。次に、Import Module を使って、セッション/スクリプトにモジュールを追加します。

コマンドレットのすべてのモジュールが使用可能です。Powershellのスキルを向上させながら、独自のモジュールを作成することも可能です。ファイル暗号化モジュールをインストールするには、TechNetからダウンロードしてください。

次に、Modulesディレクトリにコピーする必要があります。自分でインストールするだけなら、ユーザーフォルダのPowershellModulesにコピーしてください。これをエクスプローラーにコピーして、ショートカットにします。

%UserProfile%\Documents\WindowsPowerShell\Modules

全ユーザーにインストールする場合は、Program FilesWindows PowerShellのContentModulesフォルダーを使用します。これをエクスプローラーに貼り付けると、ショートカットになります。

%ProgramFiles%\Windows PowerShell\Modules

ModulesディレクトリにGNUPGという新しいフォルダを作成し、そこにPSM1ファイルを貼り付けます。

その都度、import module GnuPG を使ってモジュールをインポートする必要があります。ただし、実行ポリシーを「無制限」に調整する必要がある場合があります。これを行うには、Set ExecutionPolicy RemoteSignedというコマンドレットを実行します。

このモジュールはダウンロードしたものなので、やはりローカルファイルとしてマークする必要があります。ファイルを右クリックし、「プロパティ」を選択します。次に、ダイアログボックスで「ブロックの解除」をクリックします。UACダイアログで操作を確認すると、モジュールが使用できるようになります。

コマンドレットを使用する

GPG4Winのインストールに使用した最初のコマンドレットをスキップしてください。そうでない場合は、このコマンドレットを使用して、プログラムのインストールと設定を行うことができます。 コマンドレットは、任意のフォルダーにダウンロードし、インストーラーを実行します。他の2つは、暗号を追加することと、暗号を削除することの相補的な関係です。いずれも3つのパラメータを持つ。

1つ目は、-FolderPathとして渡されるディレクトリです。このモジュールは、ディレクトリ内の各ファイルを繰り返し処理し、ファイルの暗号化を適用または解除します。ドキュメントフォルダを指定しないようにします。このスクリプトを使用するには、いくつかのサブフォルダを作成する必要があります。モジュールのソースコードを見ると、Get ChildItemを使って、ディレクトリの中身をすべて取得するようになっています。復号化機能では、.GPGで終わるファイルに限定して検索します。

次の引数は、ファイルを暗号化するためのパスワードフレーズです:-Password.ファイルを保護するために、これが同じくらい複雑であることを確認してください。この関数では、ForEachループを使用して、各ファイルを段階的に繰り返し処理します。GPG4Winの起動時に、ファイルとパスワードフレーズを引数として組み合わせます。

最後のパラメータ-GPGPath-は必須ではありません。GPG4Winのデフォルトのインストール先が設定されています。他のドライブにある場合は、このパラメータを使用して更新することができます。起動時のターゲットを変更することになります。

脚本を書く

このスクリプトは、ディレクトリ内のファイルを暗号化し、復号化したファイルを新しいディレクトリに移動し、スクリプトは元のファイルを削除します。

ある程度の準備をした上で、スクリプトを開始することができます。まず、import module GnuPG を使って、モジュールをインポートします。いくつかの変数を設定する必要があります。最初の変数、$EncryptionTargetは、ターゲットフォルダです。(この例では、環境変数で現在のユーザーのドキュメントフォルダを指しています)。2番目の変数にパスワードのフレーズを設定します。このステップを踏むことで、後で変更することが容易になります。

Import-Module GnuPG$EncryptionTarget = "$($env:USERPROFILE)\Documents\Files-ToEncrypt"$Passphrase = "MakeAVeryLongSecurePhrase"Add-Encryption $EncryptionTarget -Password $PassphraseStart-Sleep -Seconds 60$EcnryptedFiles = Get-ChildItem $EncryptionTarget | Where-Object $_.Name -like "*.gpg"foreach ($gpg in $EcnryptedFiles){ Move-Item -Path $gpg.FullName -Destination "$($env:USERPROFILE)\Documents\$($gpg.Name)"}$UnEncryptedFiles = Get-ChildItem $EncryptionTarget | Where-Object $_.Name -notlike "*.gpg"foreach ($nongpg in $UnEcnryptedFiles){ Remove-Item -Path $nongpg.FullName -Confirm $false}

これらの変数は、暗号化のパラメータとして追加されます。スタートスリープを使用すると、ファイルの暗号化が完了するまでの時間を確保することができます。この例では3分かかりました。処理するファイルのサイズや数によって変更することができます。

Get ChildItemとWhereオブジェクトを組み合わせることで、GPGファイルを取得することができます。ForEachループを使って、これらのファイルのそれぞれを新しいディレクトリにコピーします。この手順を繰り返しますが、-Likeを-Dislikeに置き換えます。2回目のForEachループで、元のファイルをクリーンアップします。

定期的なタスクの設定

タスクスケジューラーを開き、「タスクの作成」をクリックします。

AutoEncryptという名前を付けて、ログイン時のみタスクを実行したい場合は、デフォルト値のままにしておきます。関係なく実行するように設定すると、ローカルディレクトリにのみアクセスするようになります。ただし、ターゲットがリモートコンピューターにある場合は、実行するジョブのパスワードを保存する必要があります。プライマリーアカウントを確保するために、セカンダリーアカウントを設定する必要がある場合があります。

トリガータブをクリックし、条件を設定します。次に、「新規作成」をクリックして、「シェ***ン」ウィンドウを表示させます。トリガー設定は初期値のままでも構いません。タスクの繰り返しの間隔」の横のチェックボックスをクリックし、「5分」に設定します。緊急性が高くない場合は、この操作の頻度を少なくすることも可能です。期間:」の隣のドロップダウンリストで、「Indefinite」を選択します。OK」をクリックして、「タスクの作成」ウィンドウに戻ります。

アクション]タブで[新規]をクリックし、ポップアップウィンドウで、プログラムボックスにPowershellのパスを配置します。

%SystemRoot%/system32/Windows PowerShell/v1.0/powershell.exe

OKを2回クリックすると、スクリプトがスケジュールタスクとして実行されるように設定されます。

安全性に関するいくつかの問題点、その他のアイデア

なお、復号化するためのパスワードは、ファイルが保存されているパソコンと同じパソコンにあります。これらのタイプのファイル暗号化は、ファイルを送信する前や他のコンピュータに保存する前に暗号化するのに適しています。(ロックされたファイルシステムが必要な場合は、フルディスクの暗号化を使用してください)。復号化についても同様の操作を行うようにタスクを設定することができます。

あなたは、迅速かつ汚いファイル暗号化スクリプトを必要とするプロジェクトを持っていますか?コメントで私たちを教えてください。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ