Powershell में किसी त्रुटि को अनदेखा कैसे करें और इसे जारी रखने दें?


42

मैं यह देखने की कोशिश कर रहा हूं कि क्या एक प्रक्रिया कई सर्वरों पर चल रही है और फिर इसे एक तालिका में प्रारूपित करें।

get-process -ComputerName server1,server2,server3 -name explorer | Select-Object processname,machinename

आसान हिस्सा है - जब प्रक्रिया मौजूद नहीं है या यदि सर्वर अनुपलब्ध है, तो पॉवरशेल बड़ी बदसूरत त्रुटि उत्पन्न करता है, तालिका को गड़बड़ कर देता है और जारी नहीं रहता है। उदाहरण

Get-Process : Couldn't connect to remote machine.At line:1 char:12 + get-process <<<<  -ComputerName server1,server2,server3 -name explorer | format-table processname,machinename
+ CategoryInfo          : NotSpecified: (:) [Get-Process], InvalidOperatio   nException    + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.Power   Shell.Commands.GetProcessCommand

मैं इसके आसपास कैसे पहुंचू? अगर मैं अभी भी अगर प्रक्रिया उपलब्ध नहीं है या चल रहा है अधिसूचित करना चाहते हैं।

जवाबों:


46

-ErrorAction SilentlyContinueअपने आदेश में जोड़ें ।

जब यह एक त्रुटि नहीं है, लेकिन एक अपवाद नहीं है, अपवाद -EV Err -EA SilentlyContinueको पकड़ने के लिए , आपको जोड़ना चाहिए । (इसके EAलिए एक उपनाम है ErrorAction)

आप एक नज़र डालकर अपनी स्क्रिप्ट में त्रुटि का मूल्यांकन कर सकते हैं $Err[0]


मुझे डर है कि जब तक मैं इसे गलत जगह पर चिपका रहा हूं, तब तक काम नहीं करता। get-process -ComputerName server1, server2, server3 -name explorer -ErrorAction चुपचाप बंद करो | Select-Object processname, machinename
Jake

इसे जोड़ें get-processया ऊपर मेरे अद्यतन जवाब पर एक नज़र डालें।
बार्ट दे वोस

13

संक्षिप्त उत्तर:$ErrorActionPreference = 'SilentlyContinue' अपने कोड की शुरुआत में जोड़ें ताकि आपको -ErrorAction SilentlyContinueहर कमांड में जोड़ने की आवश्यकता न हो

लंबा उत्तर: https://www.gitbook.com/book/devopscollective/the-big-book-of-powershell-error-handling/details


1
अंतर पर ध्यान दें: 'जारी रखें' (डिफ़ॉल्ट सेटिंग) निष्पादन जारी रखता है, लेकिन कंसोल को त्रुटियों को लिखता है (जो ओप से छुटकारा पाना चाहता है, अगर मैं उसे सही तरीके से पढ़ता हूं)। 'चुपचाप बंद करो' पूरी तरह से सभी त्रुटि-संदेशों को दबा देता है।
फ्रेडरिक स्ट्रक-शोइंग


"अपने कोड की शुरुआत में $ ErrorActionPreference = 'SilentlyContinue' जोड़ें --- ---> यह वास्तव में आपकी मदद के लिए बहुत बहुत धन्यवाद और इंटरनेट पर उपलब्ध कराने में मदद करता है।
निशांत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.