Jak używać Try-Catch w PowerShell

Jak używać Try-Catch w PowerShell
Błędy są mylące i stresujące dla wszystkich użytkowników komputerów; Często są trudne do przeczytania, dzięki czemu zastanawiasz się, gdzie skrypt poszedł nie. Możliwe jest również, że skrypt, który jest wykonywany raz, nie uruchomi się ponownie. Może wystąpić problem, który pojawi się, gdy najmniej się go spodziewasz. Dlatego powinieneś uwzględnić Obsługa błędów w każdym Skrypt PowerShell ty piszesz.

PowerShell ma doskonałe opcje radzenia sobie z błędami. Nawet w najprostszym skrypcie może zarządzać błędami, zapewniając jednocześnie nieoczekiwane zdarzenie. Wdrażając koncepcję obsługi błędów, błędy można filtrować i pokazać, aby ułatwić im zrozumienie, dodając dodatkową logikę do procesu zarządzania błędami. Spróbuj złapać bloki są wykorzystywane do obsługi lub reagowania na błędy końcowe w skryptach PowerShell.

Co to jest blok próbny w PowerShell

Odpowiemy na to pytanie w tej sekcji:

A "spróbuj ”blok służy do określenia części skryptu, w którym PowerShell powinien szukać problemów. $ Błąd Automatyczna zmienna najpierw przechowuje błąd sam w sobie, gdy blok próba napotyka błąd. Następnie PowerShell szuka bloku połowowego do obsługi błędu. PowerShell przeszukuje poszukiwania nadrzędne odpowiedniego bloku, jeśli „próbować”Instrukcja nie ma sparowanego bloku połowowego. „„Wreszcie”Blok jest wykonywany po bloku połowowym lub jeśli nie znaleziono odpowiedniego bloku połowowego. Błąd jest zapisywany w strumieniu błędów, jeśli nie można go obsłużyć.

A "Catch ”blok obejmuje polecenia monitorowania błędu lub przywracania oczekiwanego przepływu skryptu. Rodzaje błędów, które złapie blok połowowy, można określić. Różne rodzaje błędów są zawarte w instrukcji TRY, a następnie wiele bloków połowowych jest wykorzystywanych do obsługi tych błędów.

A „Wreszcie” blok jest wykorzystywany do zwolnienia lub uwolnienia jakichkolwiek zasobów, których nie wymaga twój skrypt.

Składnia próbka i wreszcie w PowerShell

Instrukcja próba składa się z bloku próbnego, z jednym lub więcej blokami „Catch” i „Wreszcie”. Powinieneś mieć przynajmniej jeden blok „złap” lub „wreszcie” z każdym instrukcją Try w skrypcie. Lista instrukcji zamknięta w nawiasach jest zgodna z słowem kluczowym TRY.

próbować

Skrypt wysyła obiekt błędu z bloku próbnego do sparowanego bloku połowowego, jeśli wystąpi błąd końcowy, gdy instrukcje na liście instrukcji są wykonywane. Rodzaje błędów są umieszczane w nawiasach, a najbardziej zewnętrzne wsporniki wskazują opcjonalność elementu.

Blok połowowy ma listę instrukcji i opcjonalną listę definicji typów błędów. PowerShell szuka odpowiedniego bloku połowowego, jeśli wystąpi błąd końcowy w bloku próbnym. W przypadku znalezienia sparowanego bloku próbki, program wykona instrukcje bloku połowowego.

złapać [[] [',' ]*]

Możesz określić jeden lub więcej rodzajów błędów w bloku połowowym. Te błędy są .Wyjątek netto. Blok połowowy działa z wyjątkami od określonych .Klasa wyjątków netto i inne pochodne klasy.

Jeśli typ błędu jest określony w bloku połowowym, obowiązkiem tego samego bloku połowowego jest obsługa tego błędu. Jeśli typ błędu nie jest zdefiniowany w bloku catch, poradzi sobie z każdym błędem, który napotyka blok próba. Oświadczenie TRY może mieć wiele bloków do obsługi różnych rodzajów błędów. Wreszcie słowo kluczowe zawiera listę instrukcji, która uruchomi się za każdym razem, gdy wykonywana jest skrypt, niezależnie od tego, czy blok próba wykonuje się bez błędu, czy też błąd istnieje w instrukcji Catch.

Wreszcie

Wykonanie pojedynczego próbka w skrypcie PowerShell

Teraz sprawdzimy praktyczną implementację metody Try-Catch. Po pierwsze, otwórz Windows PowerShell Ise i utwórz nowy plik:

Napisz następujący kod w tym pliku i zapisz ten skrypt PowerShell o nazwie „testFile2.PS1”; Możesz to wymienić tak, jak chcesz.

spróbuj bezsensestring
Catch ”wystąpił błąd."

PowerShell nie rozpoznaje „bezsensów” jako jakiegokolwiek obiektu lub polecenia, więc instrukcja połowów zostanie wykonana po uruchomieniu skryptu:

Wykonanie wielu próbek w PowerShell

Dowolną liczbę bloków połowowych można użyć z instrukcją Try. W poniższym przykładzie dodaliśmy blok próbny, który pobierał „Mydoc.Doc”I ma dwa bloki połowowe:

Pierwszy blok złapania będzie miał do czynienia System.Io.IoException I System.Internet.Przejęcie webexception rodzaje błędów. Typ błędu w drugim bloku połowowym nie jest dostarczany. Ten blok jest również odpowiedzialny za obsługę wszelkich innych błędów w zakresie zakończenia.

próbować
$ wc = new-obiekty.Internet.WebClient
$ WC.Pobierz plik („http: // www.contoso.com/mydoc.Doc "," e: \ pobierz \ testFile.Doc ”)
Write-host „Plik został pomyślnie pobrany !"

Catch [System.Internet.WebException], [System.Io.IoException]
„Nie można pobrać mydoc.Doc z http: // www.contoso.com."

złapać
„Wystąpił błąd, którego nie można rozwiązać."

Zapisz kod i wykonaj go.

Wyjście deklaruje, że „Mydoc.Doc”Plik jest pomyślnie pobierany do„E: \ pobierz ” teczka:

Aby zweryfikować istnienie nowo pobranych „Mydoc.Doc”Plik, użyjemy„Get-ChildItem" Komenda. To polecenie wyodrębni wszystkie elementy dziecięce „E: \ pobierz" teczka:

> Get-childitem „e: \ pobierz”

PowerShell wykorzystuje dziedzictwo, aby dopasować rodzaje błędów. Blok połowowy jest używany w podanym poniżej przykładu, aby złapać „Nie znaleziono polecenia" błąd:

Catch [System.Kierownictwo.Automatyzacja.CommandNotFoundException]
„Dziedziczony wyjątek”

Tutaj mamy wyjątek.

Wyodrębnij informacje o wyjątku w PowerShell

Bieżący błąd można uzyskać za pośrednictwem $ _, znany również jako $ Psitem, w bloku połowowym. Obiekt jest „Typ ErrorRecord,”I zawiera informacje o napotkanym błędu.

spróbuj bezsensestring
złapać
Write-host „Wystąpił błąd:”
Write-host $ _

Masz to!

Wniosek

Bloki Try-Catch PowerShell umożliwiają radzenie sobie z problemami skryptowymi i wykonywanie różnych operacji w zależności od napotkanych błędów. Nie tylko komunikat o błędzie może być wyświetlany w bloku połowowym, ale może również zawierać logikę do obsługi błędu i kontynuowania uruchamiania pozostałego skryptu.

W tym artykule zapewniliśmy Ci różne metody Używanie TRY-CRATCH w PowerShell. Metody te obejmują wykonywanie pojedynczych próbek, wiele instrukcji Try-Catch i ekstrakcję informacji o wyjątku w PowerShell.