Write-Information
Gibt an, wie PowerShell Datenstromdaten für einen Befehl verarbeitet.
Syntax
Default (Standardwert)
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.
Hinweis
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.
Hinweis
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 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 innerhalb der Funktion mithilfe des Codes Info.txtzu 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: Objekt übergeben, um Informationen zu schreiben
In diesem Beispiel können Sie Write-Information verwenden, um die 10 Prozesse mit der höchsten CPU-Auslastung aus der Objektausgabe von Get-Process zu 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
Mithilfe des InformationVariable-Parameters können Sie Informationseinträge in einer Variablen speichern. Auf diese Weise können Sie die Informationsstrom-Nachrichten später im Skript inspizieren.
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.
Parametereigenschaften
| Typ: | Object |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | Msg, Nachricht |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Tags
Eine oder mehrere Zeichenfolgen, 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.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 1 |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
Object
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.