Freigeben über


Write-Information

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

Syntax

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

Beschreibung

Das Write-Information Cmdlet 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. Write-Information Sie können dem Datenstrom eine Informationsmeldung hinzufügen und angeben, wie PowerShell Datenstromdaten für einen Befehl verarbeitet. Informationsströme funktionieren auch für PowerShell.StreamsVorgänge, Aufträge und geplante Vorgänge.

Hinweis

Der Informationsdatenstrom entspricht nicht der Standardkonvention, der seine Nachrichten mit dem Präfix "[Stream Name]:" vorangestellt hat. Dies war für Kürze und visuelle Sauberkeit gedacht.

Der $InformationPreference Wert der Einstellungsvariable bestimmt, ob die von Ihnen bereitgestellte Write-Information Nachricht am erwarteten Punkt des Skriptvorgangs angezeigt wird. Da der Standardwert dieser Variablen "SilentlyContinue" standardmäßig nicht angezeigt wird, werden Informationsmeldungen nicht angezeigt. Wenn Sie den Wert $InformationPreferencevon "InformationAction" nicht ändern möchten, können Sie den Wert überschreiben, indem Sie dem Befehl den allgemeinen Parameter "InformationAction " hinzufügen. Weitere Informationen finden Sie unter about_Preference_Variables und about_CommonParameters.

Hinweis

Ab Windows PowerShell 5.0 Write-Host ist ein Wrapper für Write-Information diese Option, mit dem Sie die Ausgabe an den Informationsdatenstrom ausgeben können Write-Host . Dadurch wird die Erfassung oder Unterdrückung von Daten ermöglicht, die mithilfe Write-Host von Abwärtskompatibilität geschrieben wurden. Weitere Informationen finden Sie unter Write-Host

Beispiele

Beispiel 1: Schreiben von Informationen für "Get-results"

In diesem Beispiel zeigen Sie eine Informationsmeldung "Prozesse beginnend mit 'P'" an, bevor Sie den Get-Process Befehl ausführen, um alle Prozesse mit einem Namenswert zu finden, der mit 'p' beginnt. Da die $InformationPreference Variable weiterhin auf die Standardeinstellung "SilentlyContinue" festgelegt ist, fügen Sie den InformationAction-Parameter hinzu, um den $InformationPreference Wert außer Kraft zu setzen und die Meldung anzuzeigen. Der Wert "InformationAction " lautet "Weiter". Dies bedeutet, dass Ihre Nachricht angezeigt wird, aber das Skript oder der Befehl fortgesetzt wird, wenn sie 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: Schreiben von Informationen und Kategorisieren

In diesem Beispiel teilen Write-Information Sie Benutzern mit, 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 markiert sind "Instructions".

$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 an die Verwendung des Codes 6>umInfo.txt. 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: Übergeben des Objekts zum Schreiben von Informationen

In diesem Beispiel können Write-Information Sie die höchsten 10 CPU-Auslastungsprozesse aus der Get-Process Objektausgabe schreiben, die mehrere Pipelines durchlaufen hat.

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}

Beispiel 5: Speichern von Informationsdatensätzen in einer Variablen

Mit dem Parameter InformationVariable können Sie Informationsdatensätze in einer Variablen speichern. Auf diese Weise können Sie die Informationsstreamnachrichten später im Skript überprüfen.

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

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, Message
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-Tags

Eine oder mehrere Zeichenfolgen, mit denen Sie Nachrichten sortieren und filtern können, die Sie dem Informationsstream 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

Object

Sie können Objekte weiterleiten, die an den Informationsstream an dieses Cmdlet übergeben werden sollen.

Ausgaben

None

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