Freigeben über


Write-Information

Gibt an, wie PowerShell Datenstromdaten für einen Befehl verarbeitet.

Syntax

Write-Information
     [-MessageData] <Object>
     [[-Tags] <String[]>]
     [<CommonParameters>]

Beschreibung

Das cmdlet Write-Information gibt an, wie PowerShell Datenstromdaten für einen Befehl verarbeitet.

Windows PowerShell 5.0 führt einen neuen, strukturierten Informationsstream ein. Sie können diesen Datenstrom verwenden, um strukturierte Daten zwischen einem Skript und seinen Aufrufern oder der Hostanwendung zu übertragen. mit Write-Information können Sie dem Datenstrom eine Informationsmeldung hinzufügen und angeben, wie PowerShell Datenstromdaten für einen Befehl verarbeitet. Informationsströme funktionieren auch für PowerShell.Streams, Aufträge und geplante Vorgänge.

Anmerkung

Der Informationsstrom folgt nicht der Standardkonvention, seine Nachrichten mit dem Präfix "[Stream Name]:" zu versehen. Dies war für Kürze und visuelle Sauberkeit gedacht.

Der wert der einstellungsvariablen $InformationPreference bestimmt, ob die Nachricht, die Sie für Write-Information angeben, am erwarteten Punkt des Skriptvorgangs angezeigt wird. Da der Standardwert dieser Variablen SilentlyContinueist, werden standardmäßig keine Informationsmeldungen angezeigt. Wenn Sie den Wert von $InformationPreferencenicht ändern möchten, können Sie den Wert außer Kraft setzen, indem Sie dem Befehl den InformationAction allgemeinen Parameter hinzufügen. Weitere Informationen finden Sie unter about_Preference_Variables und about_CommonParameters.

Anmerkung

Ab Windows PowerShell 5.0 ist Write-Host ein Wrapper für Write-Information. Damit können Sie Write-Host zum Ausgeben der Ausgabe an den Informationsstrom verwenden. Dies ermöglicht die Erfassung oder Unterdrückung von Daten, die mithilfe von Write-Host geschrieben wurden, während die Abwärtskompatibilität erhalten bleibt. Weitere Informationen finden Sie unter Write-Host.

Write-Information ist auch eine unterstützte Workflowaktivität in Windows PowerShell 5.1.

Beispiele

Beispiel 1: Informationen schreiben für "Get-results"

In diesem Beispiel zeigen Sie eine Informationsmeldung "Prozesse beginnend mit 'P'" an, bevor Sie den Befehl Get-Process ausführen, um alle Prozesse zu finden, die einen Namen Wert aufweisen, der mit 'p' beginnt. Da die $InformationPreference-Variable weiterhin auf die Standardeinstellung SilentlyContinuefestgelegt ist, fügen Sie den Parameter InformationAction hinzu, um den $InformationPreference-Wert zu überschreiben und die Meldung anzuzeigen. Der Wert InformationAction ist Continue, was bedeutet, dass Ihre Nachricht angezeigt wird, aber das Skript oder der Befehl fortgesetzt wird, wenn es noch nicht abgeschlossen ist.

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

Beispiel 2: Informationen schreiben und taggen

In diesem Beispiel verwenden Sie Write-Information, um Benutzern mitzuteilen, dass sie einen anderen Befehl ausführen müssen, nachdem sie den aktuellen Befehl ausgeführt haben. Im Beispiel wird der Informationsmeldung das Tag "Instructions" hinzugefügt. Nachdem Sie diesen Befehl ausgeführt haben, wird die Nachricht in den Ergebnissen angezeigt, wenn Sie den Informationsstrom nach Nachrichten durchsuchen, die "Instructions"markiert sind.

$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.

Beispiel 3: Schreiben von Informationen in eine Datei

In diesem Beispiel leiten Sie den Informationsstrom in der Funktion mit Hilfe von Code Info.txtan 6> um. Wenn Sie die Info.txt Datei öffnen, wird der Text "Hier geht's" angezeigt.

function Test-Info
{
    Get-Process P*
    Write-Information "Here you go"
}
Test-Info 6> Info.txt

Beispiel 4: Speichern von Informationsdatensätzen in einer Variablen

Mithilfe des InformationVariable-Parameters können Sie Informationseinträge in einer Variablen speichern. Auf diese Weise können Sie die Informationsstream-Nachrichten später im Skript überprüfen.

$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

Parameter

-MessageData

Gibt eine Informationsmeldung an, die Benutzern angezeigt werden soll, während sie ein Skript oder einen Befehl ausführen. Um optimale Ergebnisse zu erzielen, schließen Sie die Informationsmeldung in Anführungszeichen ein.

Typ:Object
Aliase:Msg
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Tags

Gibt eine einfache Zeichenfolge an, die Sie zum Sortieren und Filtern von Nachrichten verwenden können, die Sie dem Informationsstrom mit Write-Informationhinzugefügt haben. Dieser Parameter funktioniert ähnlich wie der Tags-Parameter in New-ModuleManifest.

Typ:String[]
Position:1
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

None

Sie können keine Objekte an dieses Cmdlet weiterleiten.

Ausgaben

None

Dieses Cmdlet gibt keine Ausgabe zurück. Er schreibt nur in den Informationsstrom.