Come generare messaggi informativi in PowerShell
- Introduzione all’Exporting Output in PowerShell
-
il Cmdlet
Write-Output
in PowerShell -
il Cmdlet
Write-Host
eWrite-Information
in PowerShell -
il Cmdlet
Write-Warning
in PowerShell -
il Cmdlet
Write-Debug
in PowerShell -
il Cmdlet
Write-Error
in PowerShell -
il Cmdlet
Write-Verbose
in PowerShell

Scrivere messaggi informativi nella console è un processo essenziale in qualsiasi linguaggio poiché fornisce feedback corretto all’utente. Tuttavia, ci sono molteplici modi per stampare messaggi in Windows PowerShell.
Questo articolo differenzierà i vari comandi di scrittura come scrivere messaggi informativi, di avviso e di errore e fornirà situazioni in cui e dove possiamo usarli.
Introduzione all’Exporting Output in PowerShell
Prima di iniziare a discutere i diversi comandi di scrittura, vale la pena notare che PowerShell può generare un messaggio racchiudendo una singola riga tra virgolette singole (''
) o doppie (""
).
Esempio di Codice:
"Hello World!"
'Hello World'
Output:
Hello World!
Hello World
Questa sintassi è possibile in PowerShell grazie all’espressione letterale della stringa e al pipeline della stringa nascosta. I vari frammenti di codice sopra sono equivalenti all’esempio di codice sottostante.
Esempio di Codice:
"Hello World!" | Out-Host
Il comando Out-Host
invia gli oggetti preceduti per la visualizzazione sulla console.
il Cmdlet Write-Output
in PowerShell
Il primo metodo di stampa è il comando Write-Output
. Questo cmdlet è la sintassi più basilare di tutti i metodi di stampa all’interno dell’ambiente di scripting di PowerShell.
Possiamo paragonarlo a molti diversi metodi basilari di stampa di linguaggi come print
e stdout
.
Esempio di Codice:
Write-Output "Hello World!"
Output:
Hello World!
il Cmdlet Write-Host
e Write-Information
in PowerShell
Il comando Write-Host
è un altro metodo di stampa simile al modo precedente, Write-Output
.
L’unica differenza di questo comando prima che fosse aggiornato in PowerShell 5.0 è che il metodo può generare solo messaggi con colori diversi utilizzando i parametri -BackgroundColor
e -ForegroundColor
.
Come accennato, a partire da Windows PowerShell 5.0, Write-Host
è ora un wrapper per Write-Information
. Questo ci permette di usare Write-Host
per emettere output nel flusso informativo.
Questo cmdlet consente la soppressione o la cattura dei dati scritti utilizzando il comando Write-Host
mantenendo la compatibilità retroattiva.
La variabile di preferenza $InformationPreference
e il parametro standard -InformationAction
non influenzano i messaggi di Write-Host
. L’eccezione a questa regola è -InformationAction Ignore
, che sopprime effettivamente l’output di Write-Host
.
Scrivere nel flusso informativo utilizzando Write-Host
o Write-information
non creerà problemi con la tua stringa di output.
Possiamo anche manipolare la visibilità del flusso informativo se usiamo il parametro -InformationAction
, a condizione che associamo anche il valore del parametro dato alle istruzioni Write-Host
nella funzione.
Ad esempio, l’esempio sottostante disabiliterà il flusso informativo per impostazione predefinita, a meno che non venga richiesto diversamente attraverso il parametro -InformationAction
.
Write-Host 'This is a test message' -InformationAction $InformationPreference -ForegroundColor Green
il Cmdlet Write-Warning
in PowerShell
Il comando Write-Warning
scrive un messaggio di avviso sull’host di Windows PowerShell. La risposta all’evento di avviso dipende dal valore della variabile $WarningPreference
dell’utente e dal parametro standard -WarningAction
.
I valori validi della variabile $WarningPreference
sono i seguenti.
Stop
- Visualizza i messaggi di avviso e di errore e poi interrompe l’esecuzione.Inquire
- Visualizza il messaggio di avviso e richiede all’utente il permesso di continuare sotto forma di un messaggio di conferma.Continue
- Il valore predefinito della variabile. Visualizza il messaggio di avviso e poi lo esegue.SilentlyContinue
- Non visualizza il messaggio di avviso. Continua ad eseguire.
Esempio di Codice:
Write-Warning "This is only a test warning notification." -WarningAction Continue
il Cmdlet Write-Debug
in PowerShell
Il comando Write-Debug
è anche un altro metodo per stampare in PowerShell. Tuttavia, questo viene solitamente utilizzato di più nello sviluppo per stampare messaggi di debug nell’ambiente di scripting.
I messaggi di debug non vengono visualizzati per impostazione predefinita, ma possono essere cambiati utilizzando la variabile $debugPreference
.
Esempio di Codice:
Write-Debug "Error on line 1. Please investigate."
$debugPreference = "Continue"
Write-Debug "Error on line 5. Please investigate."
Output:
DEBUG: Error on line 5. Please investigate.
il Cmdlet Write-Error
in PowerShell
Il comando Write-Error
genera un errore non terminante. Per impostazione predefinita, gli errori vengono inviati nel flusso di errore al programma host di PowerShell per essere esportati insieme all’output.
Per generare un errore non terminante, inserisci una stringa di messaggio di errore, un oggetto ErrorRecord
o un oggetto Exception
. Quindi, usa i diversi parametri di Write-Error
per popolare il record di errore che esportiamo.
Gli errori non terminanti scriveranno un errore nel flusso di errore, ma non fermeranno l’elaborazione del comando. Ad esempio, se un errore non terminante viene generato su un elemento in un insieme di elementi di input, il cmdlet continua a elaborare gli altri elementi.
Esempio di Codice:
Write-Error "Invalid object" -ErrorId B1 -TargetObject $_
Output:
Write-Error "Invalid object" -ErrorId B1 -TargetObject $_ : Invalid object
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : B1
il Cmdlet Write-Verbose
in PowerShell
Il comando Write-Verbose
scrive testo nel flusso di messaggi dettagliati in PowerShell.
Come il comando Write-Debug
, il messaggio dettagliato non viene visualizzato per impostazione predefinita, ma può essere visualizzato utilizzando la variabile $VerbosePreference
o aggiungendo il parametro switch -Verbose
.
Esempio di Codice:
Write-Verbose -Message "This will not be displayed."
Write-Verbose -Message "This will be displayed" -Verbose
Output:
VERBOSE: This will be displayed
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn