2

PowerShell 2.0 内で gpg2.exe を呼び出すスケジュールされたタスクを通じてファイルを暗号化しようとしています。

ログインすると、ISE を介して、または Windows タスク スケジューラでタスクを実行することにより、スクリプト/タスクが正常に実行されます。私は Windows Server 2008 を使用しており、使用されているサービス アカウントは管理者ではありませんが、すべてのソース フォルダーと宛先フォルダーにアクセスできます。

タスクが無人で実行されると、gpg からの出力はターゲット ディレクトリに表示されず、エラーは返されません。ユーザーをセキュリティ ポリシーに追加して、バッチとしてログインできるようにしました。GPG からの出力ではなく、現在存在するファイル (ソース) をターゲット フォルダーに書き込むことができます。

奇妙なことに、そのシステム アカウントとしてログインおよびログアウトすると、スケジュールが期限切れになるまで無人でジョブが正常に実行され、次のスケジュールでエラーが発生することがあります。

ログインしているときは常に機能し、ログインしていないときは特定のシナリオでのみ機能するため、セッションに関する設定であると確信しています。任意の助けをいただければ幸いです。

PowerShell で GPG を呼び出す方法の次の例を参照してください (はい、私は初心者です :) )

$GPG_Prog='C:\Program Files\GNU\GnuPG\gpg2.exe'

$GPG_Encrypt='-e'

$GPG_Encrypt_to='-r XXXXXXXX'

&"$GPG_Prog" -o C:\location\$File.gpg --batch --quiet --yes "$GPG_Encrypt" "$GPG_Encrypt_to" \source location\$File

Move-Item \$File.gpg \network 出力場所

ありがとう

4

2 に答える 2

1

わかりましたので、応答を待っている間、私は問題を解決し続けました. 投稿された他の問題からのいくつかの推測に基づいて、GPG から返されたまったく役に立たないエラー コードを調査した結果、Windows 内の DEP が問題の原因である可能性があると考えました。

テストするために、gpg 実行可能ファイルを DEP の例外リスト (推奨される MS ソリューションではありません) に追加し、すべての暗号化タスクを無人で実行するようにスケジュールしました。彼らはキックオフを開始し、1 時間以上のテスト期間中、完璧に動作しました。

私が読んで経験したことによると、GPG は無人で実行されているため、ログインしている実際のユーザー プロファイルとして実行されている場合に割り当てられるメモリが割り当てられないようです。妥当なサイズであり、Windows で実行可能としてマークされた設定制限を超えてメモリにアクセスしようとすると、DEP はすぐに GPG インスタンスをクラッシュさせ、アプリ ログにエラー メッセージが表示されますが、これはあまり役に立ちませんでした。

とにかく、これが誰かを助けることを願っています!

乾杯

于 2012-06-22T19:19:13.767 に答える