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 entspricht nicht den Standards und verzichtet darauf, seine Nachrichten durch das Präfix "[Stream Name]:" zu kennzeichnen. 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 $InformationPreference
nicht ä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.
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 festgelegt ist, fügen Sie SilentlyContinue den Parameter InformationAction hinzu, um den $InformationPreference
-Wert außer Kraft zu setzen 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 mithilfe des Codes 6>
an Info.txt
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: Objekt übergeben, um Informationen zu schreiben
In diesem Beispiel können Sie Write-Information
verwenden, um die 10 höchsten CPU-Auslastungsprozesse aus der Get-Process
-Objektausgabe herauszuschreiben, die mehrere Pipelines durchlaufen haben.
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
Mithilfe des InformationVariable-Parameters können Sie Informationseinträge in einer Variablen speichern. Auf diese Weise können Sie später im Skript die Informationsflussnachrichten ü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, die Sie zum Sortieren und Filtern von Nachrichten verwenden können, die Sie dem Informationsstrom mit 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 an dieses Cmdlet weiterleiten, um sie an den Informationsstrom zu übergeben.
Ausgaben
None
Dieses Cmdlet gibt keine Ausgabe zurück. Er schreibt nur in den Informationsstrom.