Write-Information
Określa sposób obsługi danych strumienia informacji przez program PowerShell dla polecenia.
Składnia
Write-Information
[-MessageData] <Object>
[[-Tags] <String[]>]
[<CommonParameters>]
Opis
Polecenie Write-Information
cmdlet określa sposób obsługi danych strumienia informacji przez program PowerShell dla polecenia.
Program Windows PowerShell 5.0 wprowadza nowy, ustrukturyzowany strumień informacji. Tego strumienia można użyć do przesyłania danych strukturalnych między skryptem a jego obiektami wywołującymi lub aplikacją hosta.
Write-Information
Umożliwia dodanie komunikatu informacyjnego do strumienia i określenie sposobu obsługi danych strumienia informacji przez program PowerShell dla polecenia. Strumienie informacji działają również dla PowerShell.Streams
zadań , zadań i zaplanowanych zadań.
Uwaga
Strumień informacji nie jest zgodne ze standardową konwencją prefiksowania komunikatów o nazwie "[Nazwa strumienia]:". Było to przeznaczone do zwięzłości i czystości wizualnej.
$InformationPreference
Wartość zmiennej preferencji określa, czy komunikat, który podajeszWrite-Information
, jest wyświetlany w oczekiwanym punkcie operacji skryptu. Ponieważ domyślna wartość tej zmiennej to SilentlyContinue, domyślnie komunikaty informacyjne nie są wyświetlane.
Jeśli nie chcesz zmieniać wartości $InformationPreference
, możesz zastąpić jej wartość, dodając wspólny parametr InformationAction do polecenia. Aby uzyskać więcej informacji, zobacz about_Preference_Variables i about_CommonParameters.
Uwaga
Począwszy od programu Windows PowerShell 5.0, Write-Host
jest otoką Write-Information
, która umożliwia emisję Write-Host
danych wyjściowych do strumienia informacji. Umożliwia to przechwytywanie lub pomijanie zapisanych danych przy jednoczesnym Write-Host
zachowaniu zgodności z poprzednimi wersjami. Aby uzyskać więcej informacji, zobacz Write-Host
Przykłady
Przykład 1. Zapisywanie informacji dla wyników get-
W tym przykładzie zostanie wyświetlony komunikat informacyjny "Procesy rozpoczynające się od "P", przed uruchomieniem Get-Process
polecenia w celu znalezienia wszystkich procesów, które mają wartość Name rozpoczynającą się od "p".
Ponieważ zmienna $InformationPreference
jest nadal ustawiona na wartość domyślną, SilentlyContinue, należy dodać parametr InformationAction , aby zastąpić $InformationPreference
wartość i wyświetlić komunikat. Wartość InformationAction to Kontynuuj, co oznacza, że komunikat jest wyświetlany, ale skrypt lub polecenie będzie kontynuowane, jeśli jeszcze nie zostało zakończone.
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
Przykład 2. Zapisywanie informacji i tagowanie ich
W tym przykładzie użyjesz Write-Information
polecenia , aby poinformować użytkowników, że będą musieli uruchomić inne polecenie po zakończeniu uruchamiania bieżącego polecenia. W przykładzie tag "Instructions"
jest dodany do komunikatu informacyjnego. Po uruchomieniu tego polecenia podczas wyszukiwania strumienia informacji pod kątem komunikatów oznaczonych tagiem "Instructions"
komunikat jest wyświetlany w wynikach.
$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.
Przykład 3. Zapisywanie informacji w pliku
W tym przykładzie przekierowujesz strumień informacji w funkcji do Info.txt
użycia kodu 6>
. Po otwarciu Info.txt
pliku zobaczysz tekst "Here you go".
function Test-Info
{
Get-Process P*
Write-Information "Here you go"
}
Test-Info 6> Info.txt
Przykład 4. Przekazywanie obiektu w celu zapisania informacji
W tym przykładzie można użyć Write-Information
polecenia , aby zapisać 10 najważniejszych procesów wykorzystania procesora CPU z Get-Process
danych wyjściowych obiektu, które przechodzą przez wiele potoków.
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}
Przykład 5. Zapisywanie rekordów informacji w zmiennej
Za pomocą parametru InformationVariable można zapisać rekordy informacji w zmiennej. Umożliwia to inspekcję komunikatów strumienia informacji w dalszej części skryptu.
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
Parametry
-MessageData
Określa komunikat informacyjny, który ma być wyświetlany użytkownikom podczas uruchamiania skryptu lub polecenia. Aby uzyskać najlepsze wyniki, należy ująć komunikat informacyjny w cudzysłów.
Typ: | Object |
Aliasy: | Msg, Message |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-Tags
Co najmniej jeden ciąg, którego można użyć do sortowania i filtrowania komunikatów dodanych do strumienia informacji za pomocą polecenia Write-Information
. Ten parametr działa podobnie do parametru Tags w pliku New-ModuleManifest
.
Typ: | String[] |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Do tego polecenia cmdlet można przekazać obiekty potokowe, aby przekazać je do strumienia informacji.
Dane wyjściowe
None
To polecenie cmdlet nie zwraca żadnych danych wyjściowych. Zapisuje tylko w strumieniu komunikatów informacyjnych.