システムにリモートでアクセスし、そこでファイルを圧縮または解凍して、完了時にプロセス信号を受信できるようにしたい。Start-processは、-waitパラメーターと連携して、PowerShellから7z.exeを同期的に実行します。これをinvoke-commandと組み合わせて同じコマンドをリモートで実行しようとすると、waitパラメーターが尊重されず、プロセスがすぐに返され、zipファイルが生成されないため、プロセスが強制終了されていると思います。
[string]$sevenZip = "C:\Program Files\7-zip\7z.exe"
[Array]$arguments = "a", $zipFilename, $dirToZip;
"Starting $sevenZip with $arguments"
Start-Process $sevenZip "$arguments" -Wait
#blocks and waits for zip file to complete
私はもともとPSCXのwrite-zipとexpand-archiveを試しましたが、後者は64ビットの.NET4.0構成と互換性がありません。そのため、コマンドラインから64ビットの7z.exeを呼び出そうとしています。エラーは発生していません。PowerShellは、ジョブを実行状態として報告してから完了し、zipファイルは生成されません。
Invoke-Command -ComputerName localhost -FilePath 'C:\Scripts\ZipIt.ps1' -ArgumentList 'd:\TestFolder','d:\promote\TestFile.7z' -AsJob
ヘルプやポインタに感謝します。
ありがとう、グレゴリー