Come usare il try-catch in PowerShell

Come usare il try-catch in PowerShell
Errori sono confusi e stressanti per tutti gli utenti di computer; Sono spesso impegnativi da leggere, facendoti chiedere dove è andata la sceneggiatura. È anche possibile che uno script che viene eseguito una volta non verrà più eseguito. Ci possono essere problemi che si presentano quando ci aspetta meno. Ecco perché dovresti includere Gestione degli errori in ogni Script PowerShell Scrivi.

PowerShell ha alcune eccellenti opzioni per affrontare gli errori. Anche nello script più semplice, può gestire gli errori garantendo al contempo che un evento inaspettato non provoca un arresto anomalo del sistema. Implementando il concetto di gestione degli errori, gli errori possono essere filtrati e mostrati per renderli più facili da capire, aggiungendo una logica extra al processo di gestione degli errori. Prova a catturare i blocchi vengono utilizzati per gestire o rispondere agli errori di terminazione negli script di PowerShell.

Che cos'è un blocco di cattura in PowerShell

Risponderemo a questa domanda in questa sezione:

UN "Prova "blocco viene utilizzato per specificare una parte di uno script in cui PowerShell dovrebbe cercare problemi. IL $ ERRORE La variabile automatica prima memorizza l'errore in sé quando il blocco prova incontra un errore. Successivamente, PowerShell cerca un blocco di cattura per la gestione dell'errore. PowerShell cerca gli ambiti dei genitori un blocco di cattura adatto se il "Tentativo"L'istruzione non ha un blocco di cattura accoppiato. IL "Finalmente"Il blocco viene eseguito dopo il blocco di cattura o se non è stato trovato alcun blocco di cattura appropriato. L'errore è scritto nel flusso di errore se non può essere gestito.

UN "Catch ”blocco comprende i comandi per il monitoraggio dell'errore o il ripristino del flusso previsto dello script. È possibile specificare i tipi di errori che catturerà. Vari tipi di errori sono inclusi in un'istruzione Try e vengono quindi utilizzati più blocchi di cattura per gestire tali errori.

UN Blocco "Finalmente" viene utilizzato per liberare o rilasciare qualsiasi risorsa che il tuo script non richiede più.

Sintassi di try-catch e infine in PowerShell

Una dichiarazione di prova è composta da un blocco di prova, con uno o più blocchi "cattura" e "finalmente". Dovresti avere almeno un blocco "cattura" o "finalmente" con ogni dichiarazione nel tuo script. Un elenco di dichiarazioni racchiuso tra parentesi segue la parola chiave prova.

Tentativo

Lo script invia l'oggetto di errore dal blocco Try al blocco di cattura accoppiato se si verifica un errore di terminazione mentre le istruzioni nell'elenco delle istruzioni stanno eseguendo. I tipi di errore sono posizionati tra parentesi e le staffe più esterne indicano l'opzione dell'elemento.

Il blocco catch ha un elenco di istruzione e un elenco facoltativo per le definizioni del tipo di errore. PowerShell cerca il blocco di cattura adatto se si verifica un errore di terminazione nel blocco try. Nel caso in cui venga trovato il blocco di bat-catch accoppiato, il programma eseguirà le istruzioni del blocco catch.

presa [[] [',' ]*]

È possibile specificare uno o più tipi di errori nel blocco di cattura. Questi errori sono i .Eccezione netta. Un blocco catch funziona con le eccezioni dal specificato .Classe di eccezioni del framework net e altre classi derivate.

Se un tipo di errore viene specificato in un blocco di cattura, è responsabilità dello stesso blocco di cattura per gestire tale errore. Se un tipo di errore non è definito nel blocco catch, gestirà qualsiasi errore che il blocco di prova incontra. Una dichiarazione di prova può avere numerosi blocchi di cattura per gestire vari tipi di errore. La parola chiave infine comprende un elenco di istruzione che viene eseguito ogni volta che viene eseguito lo script, sia che il blocco prova esegui senza errore o se esiste un errore in una dichiarazione di cattura.

Finalmente

Esecuzione di un singolo try-catch nello script PowerShell

Ora, controlleremo l'implementazione pratica del metodo Try-Catch. In primo luogo, apri il tuo Windows Powershell ISE e crea un nuovo file:

Scrivi il seguente codice in questo file e salva questo script PowerShell chiamato "testfile2.PS1"; Puoi nominarlo come vuoi.

Prova nonstress
cattura "si è verificato un errore."

PowerShell non riconosce il "assenziere" come qualsiasi oggetto o comando, quindi l'istruzione Catch verrà eseguita dopo aver eseguito lo script:

Eseguendo più try-catch in PowerShell

Qualsiasi numero di blocchi di cattura può essere utilizzato con un'istruzione Try. Nell'esempio seguente, abbiamo aggiunto un blocco di prova che download "Mydoc.doc"E ha due blocchi di cattura:

Il primo blocco di catch si occuperà di Sistema.Io.Ioexception E Sistema.Netto.WebException sorta di errori. Il tipo di errore nel secondo blocco di cattura non è fornito. Questo blocco è anche responsabile della gestione di altri errori di terminazione.

Tentativo
$ WC = Sistema di New-Object.Netto.Webclient
$ WC.DownloadFile ("http: // www.Contoso.com/mydoc.Doc "," e: \ download \ testfile.Doc ")
Il file "Write-Host" ha scaricato correttamente !"

cattura [sistema.Netto.WebException], [sistema.Io.Ioexception]
"Impossibile scaricare mydoc.Doc da http: // www.Contoso.com."

presa
"Si è verificato un errore che non poteva essere risolto."

Salva il codice ed eseguilo.

L'output dichiara che il "Mydoc.doc"Il file viene scaricato correttamente in"E: \ Download " cartella:

Per verificare l'esistenza del nuovo scaricato "Mydoc.doc"File, utilizzeremo il"Get-childitem"Comando. Questo comando estraggerà tutti gli elementi del bambino del "E: \ Download" cartella:

> Get-childitem “E: \ download”

PowerShell usa l'eredità per abbinare i tipi di errore. Un blocco di cattura viene utilizzato nell'esempio di seguito per catturare un "Comando non trovato"Errore:

cattura [sistema.Gestione.Automazione.CommandNotFoundException]
"Eccezione ereditata"

Qui, abbiamo l'eccezione.

Estrai informazioni di eccezione in PowerShell

L'errore corrente può essere ottenuto tramite $ _, conosciuto anche come $ Psitem, In un blocco di cattura. L'oggetto è del "Tipo di errorrecord,"E contiene informazioni sull'errore riscontrato.

Prova nonstress
presa
Write-host "Un errore si è verificato:"
Scrivi-host $ _

Ecco qua!

Conclusione

I blocchi di bat-catch di PowerShell consentono di gestire i problemi di script ed eseguire varie operazioni a seconda degli errori riscontrati. Non solo il messaggio di errore può essere visualizzato nel blocco catch, ma può anche includere la logica per la gestione dell'errore e continuare a eseguire lo script rimanente.

In questo articolo, ti abbiamo fornito diversi metodi di Utilizzo di try-catch in PowerShell. Questi metodi includono l'esecuzione di singoli try-catch, più dichiarazioni di try-catch ed estrazione di informazioni di eccezione in PowerShell.