Come sopprimere gli errori di PowerShell
- Introduzione all’Azione degli Errori in PowerShell
-
Usa il parametro
-ErrorAction
in PowerShell - Impostazione delle Preferenze di Azione sugli Errori in PowerShell
-
Utilizza l’istruzione
Try-Catch
in PowerShell - Conclusione

Questo articolo esplora il mondo complesso della gestione degli errori in PowerShell, analizzando vari metodi come il parametro -ErrorAction
, l’impostazione delle preferenze di azione sugli errori e l’impiego dell’istruzione Try-Catch
. Ognuno di questi metodi ha uno scopo unico, dal continuare silenziosamente l’esecuzione dello script nonostante gli errori all’implementazione di sofisticati meccanismi di gestione degli errori.
Questa esplorazione dettagliata è progettata per fornire sia agli scriptatori principianti che a quelli esperti le conoscenze necessarie per prendere decisioni informate sulla gestione degli errori nei loro script PowerShell, assicurando che possano gestire efficacemente situazioni impreviste e mantenere l’integrità dello script.
Introduzione all’Azione degli Errori in PowerShell
Anche se è facile sopprimere gli errori di Windows PowerShell, farlo non è sempre l’opzione migliore (anche se può esserlo). Se diciamo imprudentemente a PowerShell di nascondere gli errori, ciò può far sì che il nostro script si comporti in modo imprevedibile.
Sopprimere i messaggi di errore rende anche molto più complicato il troubleshooting e la raccolta di informazioni. Quindi procedi con cautela e fai attenzione a utilizzare i seguenti frammenti che vedrai in questo articolo.
Usa il parametro -ErrorAction
in PowerShell
Il parametro -ErrorAction
in PowerShell è progettato per determinare come un cmdlet risponde agli errori di runtime. Per impostazione predefinita, PowerShell visualizzerà gli errori sulla console e continuerà l’esecuzione.
Tuttavia, in determinati scenari, potresti voler alterare questo comportamento - ad esempio, per sopprimere i messaggi di errore o fermare l’esecuzione quando si verifica un errore. Qui è dove -ErrorAction
diventa cruciale.
Comando:
Get-Service 'svc_not_existing' -ErrorAction SilentlyContinue
Write-Host "This line will execute regardless of the above command's result."
Nel nostro script, tentiamo di recuperare un servizio chiamato 'svc_not_existing'
, un servizio che presumibilmente non esiste. Applicando -ErrorAction SilentlyContinue
, istruiamo PowerShell a proseguire senza interruzioni, evitando la visualizzazione di un messaggio di errore qualora non riesca a trovare il servizio.
Successivamente, il nostro script passa senza soluzione di continuità al comando Write-Host
. Questo comando emette un messaggio specifico sulla console.
Output:
Impostazione delle Preferenze di Azione sugli Errori in PowerShell
Se abbiamo bisogno che uno script si comporti in un certo modo (come ad esempio sopprimere gli errori), potremmo considerare di impostare alcune variabili di preferenza. Le variabili di preferenza fungono da impostazioni di configurazione per PowerShell.
Potremmo utilizzare una variabile di preferenza per controllare il numero di elementi nella cronologia che PowerShell conserva o costringere PowerShell a chiedere all’utente prima di eseguire azioni specifiche.
Ad esempio, ecco come puoi utilizzare una variabile di preferenza per impostare il parametro -ErrorAction
su SilentlyContinue
per l’intera sessione.
Comando:
$ErrorActionPreference = 'SilentlyContinue'
Get-Service 'nonexistent_service'
Write-Host "This message is displayed even if the previous command fails."
Nel nostro script, iniziamo impostando $ErrorActionPreference
su 'SilentlyContinue'
. Questa azione assicura che l’impostazione venga applicata a tutti i comandi successivi all’interno del nostro script.
Di conseguenza, eventuali errori che normalmente si presenterebbero sono efficacemente soppressi.
Successivamente, utilizziamo il cmdlet Get-Service
per tentare di recuperare un servizio inesistente. In circostanze normali, questo attiverebbe un errore. Tuttavia, grazie alla nostra impostazione precedente di $ErrorActionPreference
, eventuali errori che sarebbero stati generati rimangono invisibili e discreti.
Dopo questo, il nostro script passa elegantemente al comando Write-Host
. Questo comando è responsabile della visualizzazione di un messaggio sulla console.
Output:
Ci sono molte altre azioni di errore che possiamo specificare per il parametro switch ErrorAction
.
Continue
: PowerShell visualizzerà il messaggio di errore, ma lo script continuerà a essere eseguito.Ignore
: PowerShell non produce alcun messaggio di errore, non scrive alcun output di errore sull’host e continua l’esecuzione.Stop
: PowerShell visualizzerà il messaggio di errore e smetterà di eseguire lo script.Inquire
: PowerShell visualizza il messaggio di errore ma chiederà prima conferma se l’utente desidera continuare.SilentlyContinue
: PowerShell continua silenziosamente con l’esecuzione del codice se il codice non funziona o presenta errori non terminali.Suspend
: PowerShell sospende il flusso di lavoro dello script.
Utilizza l’istruzione Try-Catch
in PowerShell
L’istruzione Try-Catch
è uno strumento potente in PowerShell per gestire e rispondere agli errori in modo controllato e sofisticato. Permette agli scriptatori di provare
un blocco di codice e catturare
eventuali eccezioni (errori) che si verificano durante la sua esecuzione.
Questo approccio è utile quando si desidera gestire gli errori in modo elegante, eseguire azioni specifiche quando si verifica un errore o prevenire che gli errori interrompano bruscamente il tuo script.
Comando:
try {
Get-Service 'nonexistent_service'
}
catch {
Write-Host "An error occurred: $_"
}
In questo script, prima racchiudiamo un comando potenzialmente soggetto a errori, Get-Service 'nonexistent_service'
, all’interno di un blocco try
. Stiamo tentando di recuperare un servizio che probabilmente non esiste, il che normalmente comporterebbe un errore.
Tuttavia, invece di permettere che questo errore termini lo script o visualizzi un’eccezione non gestita, lo catturiamo. Nel blocco catch
, eseguiamo quindi un comando Write-Host
per visualizzare un messaggio di errore personalizzato, inclusi i dettagli dell’errore ($_
rappresenta l’oggetto errore corrente).
Output:
Conclusione
Mentre concludiamo il nostro viaggio attraverso i diversi aspetti della gestione degli errori in PowerShell, è chiaro che la potenza di questo linguaggio di scripting risiede nella sua flessibilità e profondità. Dalla semplicità del parametro -ErrorAction
al controllo sfumato offerto dalle istruzioni Try-Catch
, PowerShell fornisce un’ampia cassetta degli attrezzi per gestire gli errori in una varietà di scenari.
Comprendere questi strumenti e sapere quando applicarli è essenziale per scrivere script robusti e resilienti. Abbiamo esplorato come sopprimere gli errori possa essere sia un vantaggio che un rischio, a seconda del contesto, e abbiamo visto come catturare gli errori per un’analisi successiva.
Ormai dovresti avere una comprensione completa di questi metodi e essere ben equipaggiato per applicarli nei tuoi sforzi di scripting.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn