バックアップ操作の一部として、7zipコマンドを実行して、フォルダを単一の.7zファイルに圧縮します。 InVoke-WMIMethod
を使用しているので問題はありません。Powershell - 完了したらリモートプロセスを確認する
例:私のスクリプトが続くよう
$zip = "cmd /c $irFolder\7za.exe a $somedirectory.7z $somedirectory"
"InVoke-WmiMethod -class Win32_process -name Create -ArgumentList $zip -ComputerName $remotehost"
私の問題がでてくる
、7za.exeプロセスが完了していません。私はその後、リモートシステムからアイテムをコピーしようとしていますが、不完全であるか失敗しています。誰かが、7za.exeプロセスがまだ実行中であるかどうかを識別する方法を理解し、それが死ぬまで待ってから、スクリプトの残りの部分を続行する方法を指摘できますか?
私は...
get-wmiobject -class Win32_Process -ComputerName $remotehost | Where-Object $_.ProcessName -eq "7za.exe"}
なく、私の問題のために使用可能な情報にこれをオンにする方法がわから経由してリモートシステムからプロセスを引っ張って把握することができます。
回答UPDATE:(@dugasによって微調整するTHX)
これは...それを必要とするもののためにいくつかのフィードバックでそれを行うだろう
do {(Write-Host "Waiting..."),(Start-Sleep -Seconds 5)}
until ((Get-WMIobject -Class Win32_process -Filter "Name='7za.exe'" -ComputerName $target | where {$_.Name -eq "7za.exe"}).ProcessID -eq $null)
私はInvoke-Commandを見ましたが、この時点でwinrmはリモートシステム上の私にとってはオプションではありません。将来的にはそれが期待されます。私はその情報を含めなかったことを謝ります... – c3uba9wfaq
答えを更新しました。 – dugas
申し訳ありません私はあなたに功績を与えています。もう一度.I Get-Processはこのケースでは動作しませんが、Get-WMIObjectを使ってうまく動作しました。 ((Get-WMIobject -Class Win32_process -ComputerName $ target | where {$ _。Name -eq "7za.exe)}を実行すると、{{Write-Host" Waitng ... "}、{Start-Sleep -Seconds 5}} "})。ProcessID -eq $ null) – c3uba9wfaq