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 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 $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.
Write-Information
ist auch eine unterstützte Workflowaktivität in Windows PowerShell 5.1.
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 in der Funktion mit Hilfe von Code Info.txt
an 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: 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 Informationsstream-Nachrichten später im Skript überprüfen.
$psproc = Get-Process -Id $PID | Select-Object ProcessName, CPU, Path
Write-Information -MessageData $psproc -Tags 'PowerShell' -InformationVariable 'InfoMsg'
$InfoMsg | Select-Object *
MessageData : @{ProcessName=powershell; CPU=1.609375;
Path=C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe}
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 |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Tags
Gibt eine einfache Zeichenfolge an, 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
None
Sie können keine Objekte an dieses Cmdlet weiterleiten.
Ausgaben
None
Dieses Cmdlet gibt keine Ausgabe zurück. Er schreibt nur in den Informationsstrom.