पर स्क्रिप्ट को समाप्त करें, मेरे पास एक स्क्रिप्ट है जिसमें मैं एक प्रक्रिया को रोकता हूं (मारता हूं)। उसके तुरंत बाद, मुझे यह जांचने के लिए कुछ कोड चाहिए कि प्रक्रिया वास्तव में रुक गई है या नहीं, और यदि नहीं, तो स्क्रिप्ट से बाहर निकलें (और यदि यह वास्तव में रुक गया है, तो स्क्रिप्ट निश्चित रूप से जारी रहेगी।) यहां बताया गया है कि मैंने इसे कैसे करने की कोशिश की:यह सुनिश्चित करने के लिए कि एक दी गई प्रक्रिया नहीं चल रही है, और
if (Get-Process "notepad" -ErrorAction SilentlyContinue) {
Write-Host "Program still running somehow, terminating script..."
exit
}
else
{ Write-Host "Program stopped." }
मैंने सोचा कि मैं यह पता लगा कि बयान (Get-Process "progname" -ErrorAction SilentlyContinue)
$ सच करने के लिए eval होता था अगर वहाँ एक या अधिक चल रही प्रक्रियाओं (यानी वहाँ उत्पादन लौटे था) था, और $ झूठी अगर कोई उत्पादन वापस आ गया था (मैं निर्दिष्ट यह सुनिश्चित करने के लिए -ErrorAction SilentlyContinue
यह सुनिश्चित करने के लिए कि कोई नाम वापस नहीं आएगा जब उस नाम से प्रोग्राम नहीं मिला था।) यह परीक्षण में काम करता था जब मैंने एक रनिंग प्रोग्राम ("नोटपैड") का उपयोग करके इस कोड ब्लॉक को चलाया, और जब मैंने एक गैर- - अनुभवी कार्यक्रम (जैसे "नोटपैडिक्सएक्स" कहें।)
हालांकि, जब मैं तो मेरे बड़े कार्यक्रम में यह एकीकृत है, और लाइन जो कार्यक्रम समाप्त हो जाता है के बाद इसे तुरंत डाल दिया, के रूप में इतना: $ सत्य पर
Write-Host "Terminating Program..."
Stop-Process -Name "notepad" -Force
if (Get-Process "notepad" -ErrorAction SilentlyContinue) {
Write-Host "Program still running somehow, terminating script..."
exit
}
else
{ Write-Host "Program stopped." }
Get-Process
लाइन evals, और स्क्रिप्ट समाप्त होता है। क्या यह Stop-Process
लाइन के बीच बस दौड़ की स्थिति है, और बाद में Get-Process
लाइन है, या यह एक तर्क दोष है? (और यदि हां, तो ठीक है?)
[पावरहेल: सिंक्रोनस स्टॉप-प्रोसेस] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/4107581/powershell-synchronous-stop-process) – neontapir
यह वही है जो मैं @neontapir चाहता हूं, लेकिन यह सवाल अधिक है परीक्षा के बाद यह सुनिश्चित करता है कि प्रक्रिया जारी रखने से पहले वास्तव में बंद कर दिया गया है। तो, मैं बिल्कुल एक डुप्लिकेट नहीं कहूंगा। हालांकि, मैं संदर्भ की सराहना करता हूं, और इसे शामिल करता हूं; लेकिन, मुझे अभी भी तर्क समस्या मिल रही है :( –