2011-03-24 13 views
6

किसी स्क्रिप्ट में Invoke-WmiMethod का उपयोग कर किसी समस्या में चल रहा है, जो कि कुछ कंप्यूटरों के खिलाफ चलाए जाने पर बस लटकता है। मैं जो करना चाहता हूं वह कमांड निष्पादित करता है और यदि यह कुछ निश्चित अवधि के भीतर वापस नहीं आता है (60 से 120 सेकेंड का कहना है) तो आगे बढ़ें (फ़ाइल को बकाया लॉगिंग भी करें।) एकमात्र तरीका जिसे मैं वर्तमान में जानता हूं ऐसा करने के लिए -AsJob पैरामीटर का उपयोग करना है; हालांकि, जब मैं कोशिश करता हूं, तो तैयार नौकरी तुरंत विफल हो जाती है (यहां तक ​​कि उन कंप्यूटरों के खिलाफ जहां Invoke-WmiMethod कथन -AsJob पैरामीटर के बिना काम कर रहा है।) अन्य डब्ल्यूएमआई से संबंधित cmdlets इन समस्या मशीनों के खिलाफ काम करते हैं, इसलिए मुझे नहीं लगता कि यह एक लेखक है या डीसीओएम समस्या।टाइमआउट के साथ निष्पादन निष्पादित करें?

वैसे भी, क्या एक स्क्रिप्ट में एक कथन पर टाइमआउट सेट करने के अन्य तरीके हैं जिन्हें मैं कोशिश कर सकता हूं?

उत्तर

3

हम्म, नहीं यकीन है कि क्यों Invoke-WmiMethod में विफल रहता है, लेकिन शायद Invoke-Command काम करेंगे (एक त्वरित कोशिश मुझे लगता है कि लायक) जैसे:

$job = Invoke-Command -cn $computers { Invoke-WmiMethod ... } -AsJob 
Wait-Job $job -Timeout 60 

यह आप सभी दूरस्थ कंप्यूटर पर दूरस्थ सक्षम किया है, मान है और वे चल रहे हैं कि पावरशेल 2.0। सुनिश्चित करें कि आप Vista/Windows 7 पर या XP पर व्यवस्थापक के रूप में एक उन्नत प्रॉम्प्ट से इसे चलाते हैं।

+0

अंत में फांसी 'Invoke-WmiMethod' कथन' पर एक त्रुटि मिली - 'Invoke-WmiMethod: दूरस्थ प्रक्रिया कॉल विफल। (HRESULT से अपवाद: 0x800706BE) '- इसलिए इसे देखना होगा। मेरे पास सभी लक्षित पीसी पर पीएस/विनआरएम 2.0 नहीं है, इसलिए यह वास्तव में मेरे लिए एक विकल्प नहीं है ... –

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