Powershell'deki bir hatayı nasıl görmezden gelinir ve devam etmesine nasıl izin verilir?


42

Bir işlemin birden çok sunucuda çalışıp çalışmadığını görmeye çalışıyorum ve ardından bir tabloya biçimlendiriyorum.

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

İşte bu kolay kısım - İşlem olmadığında veya sunucu kullanılamıyorsa, powershell çok çirkin bir hata veriyor, tabloyu karıştırıyor ve devam etmiyor. Örnek

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

Bunu nasıl çözebilirim? Eğer süreç mevcut değilse veya Çalışıyorsa hala haberdar olmak istiyorum.

Yanıtlar:


46

-ErrorAction SilentlyContinueKomuta ekle .

Bir hata değil, ancak işlenmeyen bir İstisna, -EV Err -EA SilentlyContinueistisnayı yakalamak için eklemelisiniz . ( EAbir takma addır ErrorAction)

Ardından komut dosyasına bakıp hatayı değerlendirebilirsiniz. $Err[0]


Yanlış yere yapıştırmadığım sürece işe yaramaz. get-process -BilgisayarAdı sunucusu1, sunucu2, sunucu3-adı gezgini -ErrorAction SilentlyContinue | Nesne Seçme işlem adı, makine adı
Jake

Eklemek get-processveya yukarıdaki güncellenmiş cevabımı bir göz atın.
Bart De Vos

13

Kısa cevap: ekle $ErrorActionPreference = 'SilentlyContinue'Eklemek gerek kalmaz kodunuzun başında -ErrorAction SilentlyContinueher komuta

Uzun cevap: https://www.gitbook.com/book/devopscollective/the-big-book-of-powershell-error-handling/details


1
Farkı not edin: 'Devam Et' (varsayılan ayar) yürütmeye devam eder, ancak konsola hataları yazar (eğer onu doğru okuduğumda kurtulmak istiyor gibi görünüyor). 'SilentlyContinue' tüm hata mesajlarını tamamen gizler.
Frederik Struck-Schøning,


“Add $ ErrorActionPreference = 'Kodunuzun başlangıcında' SilentlyContinue '” --- --- Bu gerçekten yardımcı oldu ve Yardımınız için ve Internet'te kullanıma sunmanız için çok teşekkür ederim.
Nishant
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.