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.Streams
Vorgä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 $InformationPreference
von "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-Information
hinzugefü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
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.