Write-Information

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

Syntax

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

Beschreibung

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

Windows PowerShell 5.0 führt einen neuen, strukturierten Informationsstream ein. Sie können diesen Stream verwenden, um strukturierte Daten zwischen einem Skript und dessen Aufrufern oder der Hostanwendung zu übertragen. Write-Information können Sie dem Stream eine Informationsmeldung hinzufügen und angeben, wie PowerShell Informationsstreamdaten für einen Befehl verarbeitet. Informationsstreams funktionieren auch für PowerShell.StreamsAufträge und geplante Aufgaben.

Hinweis

Der Informationsstream entspricht nicht der Standardkonvention, seinen Nachrichten "[Stream Name]:" voranzustellen. Dies war für Kürze und visuelle Sauberkeit gedacht.

Der $InformationPreference Wert der Einstellungsvariable bestimmt, ob die Nachricht, für die Sie angeben, Write-Information am erwarteten Punkt im Vorgang eines Skripts angezeigt wird. Da der Standardwert dieser Variablen SilentlyContinue ist, werden informationsbedingte Meldungen standardmäßig nicht angezeigt. Wenn Sie den Wert von nicht ändern möchten, können Sie den Wert überschreiben $InformationPreference, 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 ist ein Wrapper für Write-Information This ermöglicht es Ihnen, Write-HostWrite-Host die Ausgabe an den Informationsstream zu senden. Dies ermöglicht die Erfassung oder Unterdrückung von mit geschriebenen Write-Host Daten unter Beibehaltung der Abwärtskompatibilität. Weitere Informationen finden Sie unter Write-Host

Beispiele

Beispiel 1: Schreiben von Informationen für Get-Ergebnisse

In diesem Beispiel zeigen Sie eine Informationsmeldung mit dem Namen "Prozesse ab "P" an, bevor Sie den Get-Process Befehl ausführen, um alle Prozesse zu finden, die über einen Name-Wert verfügen, der mit "p" beginnt. Da die $InformationPreference Variable weiterhin auf die Standardeinstellung SilentlyContinue festgelegt ist, fügen Sie den Parameter InformationAction hinzu, um den $InformationPreference Wert zu überschreiben und die Nachricht anzuzeigen. Der InformationAction-Wert ist Continue. Dies bedeutet, dass Ihre Nachricht angezeigt wird, aber das Skript oder der Befehl wird fortgesetzt, 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 und Markieren von Informationen

In diesem Beispiel verwenden Write-Information Sie, um Benutzern mitzuteilen, dass sie einen weiteren Befehl ausführen müssen, nachdem sie den aktuellen Befehl ausgeführt haben. Im Beispiel wird das Tag "Instructions" der Informationsmeldung hinzugefügt. Wenn Sie nach dem Ausführen dieses Befehls den Informationsstream nach markierten "Instructions"Nachrichten durchsuchen, wird die Nachricht in den Ergebnissen angezeigt.

$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 Informationsstream in der Funktion mithilfe des Codes 6>umInfo.txt. Wenn Sie die Info.txt Datei öffnen, wird der Text "Hier geht es los" angezeigt.

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

Beispiel 4: Übergeben eines Objekts zum Schreiben von Informationen

In diesem Beispiel können Sie verwenden Write-Information , um die 10 wichtigsten CPU-Auslastungsprozesse aus der Objektausgabe zu schreiben, die Get-Process 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 Informationseinträge in einer Variablen speichern. Dadurch 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 beim Ausführen eines Skripts oder Befehls angezeigt werden soll. Um optimale Ergebnisse zu erzielen, schließen Sie die Informationsmeldung in Anführungszeichen ein.

Type:Object
Aliases:Msg, Message
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Tags

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

Type:String[]
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

Object

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

Ausgaben

None

Dieses Cmdlet gibt keine Ausgabe zurück. Es wird nur in den Informationsnachrichtenstream geschrieben.