Write-Information
Specifica il modo in cui PowerShell gestisce i dati del flusso di informazioni per un comando.
Sintassi
Write-Information
[-MessageData] <Object>
[[-Tags] <String[]>]
[<CommonParameters>]
Descrizione
Il cmdlet Write-Information
specifica il modo in cui PowerShell gestisce i dati del flusso di informazioni per un comando.
Windows PowerShell 5.0 introduce un nuovo flusso di informazioni strutturato. È possibile usare questo flusso per trasmettere dati strutturati tra uno script e i chiamanti o l'applicazione host.
Write-Information
consente di aggiungere un messaggio informativo al flusso e di specificare come PowerShell gestisce i dati del flusso di informazioni per un comando. Anche i flussi di informazioni funzionano per PowerShell.Streams
, lavori e attività pianificate.
Nota
Il flusso di informazioni non segue la convenzione standard di prefisso dei messaggi con "[Nome flusso]:". Questo è stato progettato per brevità e pulizia visiva.
Il valore della variabile di preferenza $InformationPreference
determina se il messaggio specificato per Write-Information
viene visualizzato nel punto previsto nell'operazione di uno script. Poiché il valore predefinito di questa variabile è SilentlyContinue, per impostazione predefinita, i messaggi informativi non vengono visualizzati.
Se non si vuole modificare il valore di $InformationPreference
, è possibile eseguirne l'override aggiungendo il InformationAction parametro comune al comando. Per altre informazioni, vedere about_Preference_Variables e about_CommonParameters.
Nota
A partire da Windows PowerShell 5.0, Write-Host
è un wrapper per Write-Information
. Questo consente di usare Write-Host
per emettere output nel flusso di informazioni. Ciò consente l'acquisizione o l'eliminazione dei dati scritti usando Write-Host
mantenendo al tempo stesso la compatibilità con le versioni precedenti. Per ulteriori informazioni, vedere Write-Host
Esempio
Esempio 1: Scrivere informazioni per ottenere i risultati
In questo esempio viene visualizzato un messaggio informativo "Processi che iniziano con "P", prima di eseguire il comando Get-Process
per trovare tutti i processi con un valore Name che inizia con "p".
Poiché la variabile $InformationPreference
è ancora impostata sul valore predefinito SilentlyContinue, aggiungi il parametro InformationAction per sovrascrivere il valore $InformationPreference
e visualizzare il messaggio. Il valore InformationAction è Continua, il che significa che viene visualizzato il messaggio, ma lo script o il comando continua, se non è ancora terminato.
Write-Information -MessageData "Processes starting with 'P'" -InformationAction Continue
Get-Process -Name p*
Processes starting with 'P'
18 19.76 15.16 0.00 6232 0 PFERemediation
20 8.92 25.15 0.00 24944 0 policyHost
9 1.77 7.64 0.00 1780 0 powercfg
10 26.67 32.18 0.00 7028 0 powercfg
8 26.55 31.59 0.00 13600 0 powercfg
9 1.66 7.55 0.00 22620 0 powercfg
21 6.17 4.54 202.20 12536 1 PowerMgr
42 84.26 12.71 2,488.84 20588 1 powershell
27 47.07 45.38 2.05 25988 1 powershell
27 24.45 5.31 0.00 12364 0 PresentationFontCache
92 112.04 13.36 82.30 13176 1 pwsh
106 163.73 93.21 302.25 14620 1 pwsh
227 764.01 92.16 1,757.22 25328 1 pwsh
Esempio 2: Scrivere informazioni e contrassegnarlo
In questo esempio si usa Write-Information
per informare gli utenti che dovranno eseguire un altro comando al termine dell'esecuzione del comando corrente. Nell'esempio viene aggiunto il tag "Instructions"
al messaggio informativo. Dopo aver eseguito questo comando, quando si cerca nel flusso di informazioni i messaggi contrassegnati "Instructions"
, il messaggio si trova nei risultati.
$message = "To filter your results for PowerShell, pipe your results to the Where-Object cmdlet."
Get-Process -Name p*
Write-Information -MessageData $message -Tags "Instructions" -InformationAction Continue
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
18 19.76 15.16 0.00 6232 0 PFERemediation
20 8.92 25.15 0.00 24944 0 policyHost
9 1.77 7.64 0.00 1780 0 powercfg
10 26.67 32.18 0.00 7028 0 powercfg
8 26.55 31.59 0.00 13600 0 powercfg
9 1.66 7.55 0.00 22620 0 powercfg
21 6.17 4.54 202.20 12536 1 PowerMgr
42 84.26 12.71 2,488.84 20588 1 powershell
27 47.07 45.38 2.05 25988 1 powershell
27 24.45 5.31 0.00 12364 0 PresentationFontCache
92 112.04 13.36 82.30 13176 1 pwsh
106 163.73 93.21 302.25 14620 1 pwsh
227 764.01 92.16 1,757.22 25328 1 pwsh
To filter your results for PowerShell, pipe your results to the Where-Object cmdlet.
Esempio 3: Scrivere informazioni in un file
In questo esempio si reindirizza il flusso di informazioni nella funzione a Info.txt
usando il codice 6>
. Quando si apre il file di Info.txt
, viene visualizzato il testo "Qui vai".
function Test-Info
{
Get-Process P*
Write-Information "Here you go"
}
Test-Info 6> Info.txt
Esempio 4: Passare l'oggetto per scrivere informazioni
In questo esempio, puoi utilizzare Write-Information
per scrivere i primi 10 processi con il maggiore utilizzo della CPU dall'output dell'oggetto Get-Process
che è stato elaborato attraverso più pipeline.
Get-Process | Sort-Object CPU -Descending |
Select-Object Id, ProcessName, CPU -First 10 |
Write-Information -InformationAction Continue
@{Id=12692; ProcessName=chrome; CPU=39431.296875}
@{Id=21292; ProcessName=OUTLOOK; CPU=23991.875}
@{Id=10548; ProcessName=CefSharp.BrowserSubprocess; CPU=20546.203125}
@{Id=312848; ProcessName=Taskmgr; CPU=13173.1875}
@{Id=10848; ProcessName=SnapClient; CPU=7014.265625}
@{Id=9760; ProcessName=Receiver; CPU=6792.359375}
@{Id=12040; ProcessName=Teams; CPU=5605.578125}
@{Id=498388; ProcessName=chrome; CPU=3062.453125}
@{Id=6900; ProcessName=chrome; CPU=2546.9375}
@{Id=9044; ProcessName=explorer; CPU=2358.765625}
Esempio 5: Salvataggio di record di dati in una variabile
Usando il parametro InformationVariable, è possibile salvare i record di informazioni in una variabile. In questo modo è possibile esaminare i messaggi del flusso di informazioni più avanti nello script.
Get-Process -Id $PID |
Select-Object ProcessName, CPU, Path |
Write-Information -Tags 'PowerShell' -InformationVariable 'InfoMsg'
$InfoMsg | Select-Object *
MessageData : @{ProcessName=pwsh; CPU=12.36; Path=/opt/microsoft/powershell/7/pwsh}
Source : Write-Information
TimeGenerated : 10/19/2023 11:28:15
Tags : {PowerShell}
User : sdwheeler
Computer : circumflex
ProcessId : 237
NativeThreadId : 261
ManagedThreadId : 10
Parametri
-MessageData
Specifica un messaggio informativo che si desidera visualizzare agli utenti durante l'esecuzione di uno script o di un comando. Per ottenere risultati ottimali, racchiudere il messaggio informativo tra virgolette.
Tipo: | Object |
Alias: | Msg, Message |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-Tags
Una o più stringhe che è possibile usare per ordinare e filtrare i messaggi aggiunti al flusso di informazioni con Write-Information
. Questo parametro funziona in modo simile al parametro Tag in New-ModuleManifest
.
Tipo: | String[] |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe gli oggetti da passare al flusso di informazioni a questo cmdlet.
Output
None
Questo cmdlet non restituisce alcun output. Scrive solo nel flusso di messaggi informativi.