W ramach operacji tworzenia kopii zapasowej uruchomię polecenie 7zip, aby skompresować folder do pojedynczego pliku .7z. Żadnych problemów, ponieważ używam InVoke-WMIMethod
.Powershell - Sprawdź proces zdalny, jeśli to zrobisz, kontynuuj
Przykład:
$zip = "cmd /c $irFolder\7za.exe a $somedirectory.7z $somedirectory"
"InVoke-WmiMethod -class Win32_process -name Create -ArgumentList $zip -ComputerName $remotehost"
Mój problem jest w jak mój skrypt kontynuuje proces 7za.exe nie została zakończona. Próbuję następnie skopiować element z systemu zdalnego i jest on niekompletny lub kończy się niepowodzeniem.
Czy ktoś może wskazać mi kierunek, aby dowiedzieć się, jak rozpoznać, czy proces 7za.exe nadal działa, czekać do jego śmierci, a następnie przystąpić do reszty mojego skryptu?
mogę pojąć ciągnąc proces z systemu zdalnego poprzez ...
get-wmiobject -class Win32_Process -ComputerName $remotehost | Where-Object $_.ProcessName -eq "7za.exe"}
Nie wiem, jak to zmienić w użyteczną informacją o mojej sprawie.
Odpowiedź UPDATE: (thx, by odwieść przez @dugas)
Będzie to zrobić to z pewnym sprzężeniem zwrotnym dla tych, którzy jej potrzebują ...
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)
Zerknąłem na Invoke-Command, jednak w tym momencie wykorzystanie WinRM nie jest dla mnie opcją na zdalnych systemach. Mając nadzieję, że w przyszłości to nastąpi. Przepraszam, że nie uwzględniłem tych informacji ... – c3uba9wfaq
Zaktualizowana odpowiedź. – dugas
Dobrze, że daję ci kredyt .. masz mnie na dobrej drodze. Ponownie ... Get-Process nie działa w tym przypadku, ale zauważyłem, że używanie Get-WMIObject działało dobrze. do {(Write-Host "Waitng ..."), (Start-Sleep -Seconds 5)} do ((Get-WMIobject -Class Win32_process -KomputerName $ target | gdzie {$ _. Name -eq "7za.exe "}). ProcessID -eq $ null) – c3uba9wfaq