Come parte di un'operazione di backup, eseguo il comando 7zip per comprimere una cartella in un singolo file .7z. Nessun problema lì mentre sto usando il InVoke-WMIMethod
.PowerShell - Controllo del processo remoto, se terminato
Esempio:
$zip = "cmd /c $irFolder\7za.exe a $somedirectory.7z $somedirectory"
"InVoke-WmiMethod -class Win32_process -name Create -ArgumentList $zip -ComputerName $remotehost"
Il mio problema arriva come mio script continua, il processo 7za.exe non è stato completato. Sto quindi tentando di copiare l'elemento dal sistema remoto ed è incompleto o fallisce.
Qualcuno può indicarmi la direzione per capire come identificare se il processo 7za.exe è ancora in esecuzione, attendere fino a quando non è morto, quindi procedere con il resto del mio script?
posso cogliere tirando il processo dal sistema remoto tramite ...
get-wmiobject -class Win32_Process -ComputerName $remotehost | Where-Object $_.ProcessName -eq "7za.exe"}
Non sai come trasformarla in informazioni utilizzabili per il mio problema.
risposta UPDATE: (thx per spingere da @dugas)
Questo lo farà con un feedback per coloro che ne hanno bisogno ...
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)
Ho dato un'occhiata a Invoke-Command, tuttavia a questo punto l'utilizzo di winrm non è un'opzione per me sui sistemi remoti. Sperando in futuro lo farà. Mi scuso per non aver incluso questa informazione ... – c3uba9wfaq
Risposta aggiornata. – dugas
Va bene, ti sto dando credito ... mi hai messo sulla buona strada. Anche in questo caso ... Get-Process non funziona in questo caso, ma ho trovato che usare Get-WMIObject funzionava bene. do {(Write-Host "Waitng ..."), (Start-Sleep -Seconds 5)} until ((Get-WMIobject -Class Win32_process -ComputerName $ target | dove {$ _. Nome -eq "7za.exe "}). ProcessID -eq $ null) – c3uba9wfaq