Se sei come me, non solo non hai mai commesso un errore nel tuo script, ma anche tutte le forze esterne che sono fuori dal tuo controllo funzionano sempre come previsto… Mettendo una piccola pausa sul sarcasmo, cosa fanno le persone senza il tocco magico di PowerShell? Si imbarcano nell’antica battaglia che è andata avanti per generazioni chiamata gestione degli errori.

Esempio di gestione degli errori di PowerShell

La gestione degli errori con PowerShell aiuta a garantire che un’eccezione imprevista non consenta a uno script di continuare a causare problemi., Diamo un’occhiata a uno script che farà in modo che solo le persone cool hanno accesso a tutte le cose interessanti. (Vedi Get-Content)

Funziona alla grande! Tuttavia, Kris Powell ha scoperto la lista fredda, e in rabbia per essere rimasto fuori dalla lista, esegue un’azione che dimostra che abbiamo ragione a tenerlo fuori. Cancella CoolPeople.csv.

la Prossima volta che lo script viene eseguito, si ottiene un’eccezione:

Con un vuoto $UpdatedCoolList variabile rimuove l’accesso di tutti. Molto non fresco Kris.,

Eccezioni

Prima di iniziare a gestire il sabotaggio, è importante conoscere le eccezioni. Un’eccezione è un errore o un risultato imprevisto che PowerShell deve gestire.

Esistono due tipi di eccezioni: terminazione e non terminazione. Le eccezioni terminanti interrompono lo script in esecuzione. Le eccezioni non terminanti semplicemente scrivono nella pipeline degli errori.

Fare un’eccezione non terminante un’eccezione terminante è semplice. È possibile impostare il parametro del comando su-ErrorAction su stop.,

$UpdatedCoolList = Get-Content \\FileShare\Location\CoolPeople.csv -ErrorAction Stop 

È anche possibile impostare l’azione predefinita di tutti gli errori per interrompere impostando la variabile$ErrorActionPreference = "Stop".

Nella maggior parte dei casi, un cmdlet genera un’eccezione non terminante, ma la gestione degli errori con PowerShell richiede un’eccezione di terminazione per funzionare.

Try/Catch/Finally

Dopo che-ErrorAction è impostato suStop, possiamo avvolgerlo in un blocco Try / Catch., Tryè dove eseguiamo il comando e Catch è ciò che verrà eseguito se si verifica un errore di terminazione. (Vedi Out-File)

In questo blocco di script, abbiamo catturato l’eccezione e l’abbiamo inserita in un file di registro. Break è stato usato per uscire dallo script in modo che non continuasse. Se avessimo lasciato vuoto il blocco catch, avrebbe assorbito l’errore e continuato lo script.

L’ultimo pezzo della gestione degli errori con un blocco Try/Catch/Finally èFinally., Questo viene utilizzato per fornire azioni che verranno sempre eseguite prima di uscire dallo script (o continuare). Questo è principalmente usato per ripulire. È possibile utilizzarlo per chiudere le connessioni al database, rimuovere i file o chiudere i blocchi di file. Finally consente di annullare tutte le modifiche apportate come risultato dello script, indipendentemente dal fatto che venga rilevata o meno un’eccezione.

Conclusione

Questo è tutto per le basi. Ogni volta che hai a che fare con elementi volatili o fuori dal tuo controllo, la gestione degli errori è un ottimo modo per assicurarti che il tuo script non causi problemi se le cose vanno male.