Là một phần của hoạt động sao lưu, tôi đang chạy lệnh 7zip để nén một thư mục thành một tệp .7z. Không có vấn đề gì khi tôi đang sử dụng InVoke-WMIMethod
.Powershell - Kiểm tra quá trình từ xa, nếu thực hiện tiếp tục
Ví dụ:
$zip = "cmd /c $irFolder\7za.exe a $somedirectory.7z $somedirectory"
"InVoke-WmiMethod -class Win32_process -name Create -ArgumentList $zip -ComputerName $remotehost"
Vấn đề của tôi đến trong như kịch bản của tôi tiếp tục, quá trình 7za.exe chưa hoàn tất. Sau đó tôi cố gắng sao chép mục đó ra khỏi hệ thống từ xa và nó không đầy đủ hoặc không thành công.
Ai đó có thể chỉ cho tôi theo hướng để tìm hiểu cách xác định xem quy trình 7za.exe có đang chạy hay không, đợi cho đến khi nó chết, sau đó tiếp tục với phần còn lại của tập lệnh của tôi?
tôi có thể nắm kéo quá trình từ hệ thống từ xa thông qua ...
get-wmiobject -class Win32_Process -ComputerName $remotehost | Where-Object $_.ProcessName -eq "7za.exe"}
Không chắc làm thế nào để biến chúng thành thông tin có thể sử dụng cho vấn đề của tôi.
trả lời UPDATE: (thx để di chuyển bởi @dugas)
này sẽ làm điều đó với một số thông tin phản hồi cho những người cần nó ...
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)
Tôi đã xem Invoke-Command, tuy nhiên tại thời điểm này, việc sử dụng winrm không phải là một lựa chọn cho tôi trên các hệ thống từ xa. Hy vọng trong tương lai nó sẽ. Tôi xin lỗi tôi không bao gồm thông tin đó ... – c3uba9wfaq
Đã cập nhật câu trả lời. – dugas
Được rồi, tôi cho bạn tín dụng .. bạn đã cho tôi đi đúng hướng. Một lần nữa .. Tôi Get-Process không hoạt động trong trường hợp này, nhưng tôi đã tìm thấy bằng cách sử dụng Get-WMIObject làm việc độc đáo. do {(Write-Host "Waitng ..."), (Start-Sleep -Seconds 5)} cho đến ((Get-WMIobject -Class Win32_process -ComputerName $ target | trong đó {$ _. Name -eq "7za.exe "}). ProcessID -eq $ null) – c3uba9wfaq