Condividi tramite


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. I flussi di informazioni funzionano anche per PowerShell.Streams, processi 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 ulteriori informazioni, vedere Informazioni_su_Variabili_di_Preferenza e Informazioni_su_Parametri_Comuni.

Nota

A partire da Windows PowerShell 5.0, Write-Host è un wrapper per Write-Information, il che consente di usare Write-Host per generare 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

Write-Information è anche un'attività del flusso di lavoro supportata in Windows PowerShell 5.1.

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 è ancora impostata sul valore predefinito, SilentlyContinue, aggiungi il parametro InformationAction per eseguire l'override del valore 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: Salvataggio di record di informazioni 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.

$psproc = Get-Process -Id $PID | Select-Object ProcessName, CPU, Path
Write-Information -MessageData $psproc -Tags 'PowerShell' -InformationVariable 'InfoMsg'
$InfoMsg | Select-Object *

MessageData     : @{ProcessName=powershell; CPU=1.609375;
                  Path=C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe}
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
Posizione:0
Valore predefinito:None
Necessario:True
Accettare l'input della pipeline:False
Accettare caratteri jolly:False

-Tags

Specifica una stringa semplice che è possibile usare per ordinare e filtrare i messaggi aggiunti al flusso di informazioni con Write-Information. Questo parametro funziona in modo analogo 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

None

Non è possibile inviare tramite pipe oggetti a questo cmdlet.

Output

None

Questo cmdlet non restituisce alcun output. Scrive solo sul flusso dei messaggi informativi.