एक बैकअप आपरेशन के हिस्से के रूप में, मैं 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"}
यकीन है कि ऐसा नहीं है कि चालू करने के लिए कैसे मेरे जारी करने के लिए प्रयोग करने योग्य जानकारी में।
उत्तर अद्यतन: (THX @dugas द्वारा खिसकाने के लिए)
यह उन यह जरूरत है कि के लिए कुछ प्रतिक्रिया के साथ यह करना होगा ...
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
ठीक है मैं तुम्हें दे रहा हूँ credit..you मुझे सही रास्ते पर मिला है। दोबारा .. मैं इस मामले में गेट-प्रोसेस काम नहीं करता, लेकिन मुझे गेट-डब्लूएमआईओब्जेक्ट का उपयोग करके अच्छी तरह से काम किया गया। करें {(लिखें-होस्ट "प्रतीक्षा करें ..."), (स्टार्ट-स्लीप-सेकेंड 5)} तक ((Get-WMIobject -Class Win32_process -ComputerName $ target | जहां {$ _। नाम -eq "7za.exe "})। ProcessID -eq $ null) – c3uba9wfaq