2010-04-27 16 views
12

मैंक्या Windows PowerShell का उपयोग कर प्रक्रियाओं को रोकने का एक अच्छा तरीका है?

Stop-Process -Force 

में एक PowerShell स्क्रिप्ट से एक ब्राउज़र को रोकने के लिए, यह पाइप द्वारा जो मैं करता है हालांकि, यह बहुत अचानक है। जब ब्राउज़र पुनरारंभ होता है, तो यह पता लगाता है कि यह साफ़ रूप से बंद नहीं हुआ है, और पिछले सत्र को पुनरारंभ करने का प्रयास करता है। क्या मैं कुछ तरीके से इसे अपने आप को बंद करने के लिए कह सकता हूं? ("दो तरीके हम ऐसा कर सकते हैं कर रहे हैं ...")

उत्तर

10

इस एप्लिकेशन को बंद करने उपयोगकर्ता अनुकरण करने के लिए प्रयास करें:

(Get-Process -Id 10024).CloseMainWindow() 
9

कीथ हिल पहले से ही CloseMainWindow उपयोग करने के लिए प्रस्ताव किया है()। लेकिन यह केवल बंद करने का निमंत्रण है, कुछ उपयोगकर्ता इंटरैक्शन की अभी भी आवश्यकता हो सकती है, उदाहरण के लिए कोई एप्लिकेशन कुछ और आदि को बचाने के लिए कुछ संवाद दिखा सकता है। यदि एक कॉलिंग स्क्रिप्ट वास्तव में बाहर निकलने की अपेक्षा करता है, तो मैं इस पैटर्न का उपयोग करता हूं:

# close the window and wait for exit 
$_ = Get-Process -Id 12345 
[void]$_.CloseMainWindow() 
if (!$_.HasExited) { 
    Write-Host "Waiting for exit of Pid=$($_.Id)..." 
    $_.WaitForExit() 
} 
+0

अच्छा निर्माण! धन्यवाद। –

2

तुम भी ऐसा कर सकते हैं:

Get-Process <name> | where {$_.MainWindowHandle -ne [System.IntPtr]::Zero} | foreach {$_.CloseMainWindow()} 

यह सभी प्रक्रियाओं है कि आकार से मिलान और एक खिड़की उन्हें संलग्न है बंद हो जाएगा। उदाहरण के लिए, क्रोम प्रक्रिया उपप्रोसेसेस का उपयोग कर सकती है जिसमें खिड़की नहीं है। इन उपप्रोसेसरों को नजरअंदाज कर दिया जाएगा।

+0

एफवाईआई - यह आदेश तब तक काम करता है जब तक वास्तव में दिए गए नाम के साथ एक प्रक्रिया होती है, अन्यथा यह त्रुटियों से बाहर हो जाती है। त्रुटि आपके उपयोग के मामले के आधार पर वांछित हो सकती है या नहीं भी हो सकती है। – HairOfTheDog

संबंधित मुद्दे

 संबंधित मुद्दे