Udostępnij za pośrednictwem


Write-Information

Określa obsługę danych strumienia informacji przez program PowerShell dla określonego polecenia.

Składnia

Write-Information
     [-MessageData] <Object>
     [[-Tags] <String[]>]
     [<CommonParameters>]

Opis

Polecenie cmdlet Write-Information określa, jak program PowerShell obsługuje dane strumienia informacji 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; pracy i zaplanowanych zadań.

Notatka

Strumień informacji nie jest zgodny ze standardową konwencją, która polega na poprzedzaniu wiadomości prefiksem "[Nazwa strumienia]:". Miało na celu zwięzłość i przejrzystość wizualną.

Wartość zmiennej preferencji $InformationPreference określa, czy komunikat dostarczony do Write-Information jest wyświetlany w oczekiwanym punkcie operacji skryptu. Ponieważ domyślną wartością tej zmiennej jest SilentlyContinue, domyślnie komunikaty informacyjne nie są wyświetlane. Jeśli nie chcesz zmieniać wartości $InformationPreference, możesz nadpisać tę wartość, dodając wspólny parametr InformationAction do swojego polecenia. Aby uzyskać więcej informacji, zobacz about_Preference_Variables i about_CommonParameters.

Notatka

Zaczynając od programu Windows PowerShell 5.0, Write-Host jest otoką Write-Information. Umożliwia to użycie Write-Host do emitowania danych wyjściowych do strumienia informacji. Umożliwia to przechwytywanie lub pomijanie danych zapisywanych przy użyciu Write-Host przy zachowaniu zgodności z poprzednimi wersjami. Aby uzyskać więcej informacji, zobacz Write-Host

Przykłady

Przykład 1: Wpisz informacje dla wyników uzyskanych przez funkcję Get.

W tym przykładzie zostanie wyświetlony komunikat informacyjny "Procesy rozpoczynające się od "P", przed uruchomieniem polecenia Get-Process w celu znalezienia wszystkich procesów, które mają wartość Nazwa rozpoczynającą się od "p". Ponieważ zmienna $InformationPreference jest nadal ustawiona na wartość domyślną, SilentlyContinue, należy dodać parametr InformationAction, aby zastąpić wartość $InformationPreference i wyświetlić komunikat. Wartość InformationAction jest 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, aby poinformować użytkowników, że będą musieli uruchomić inne polecenie po zakończeniu uruchamiania bieżącego polecenia. W przykładzie dodaje się tag "Instructions" do komunikatu informacyjnego. Po uruchomieniu tego polecenia podczas wyszukiwania strumienia informacji pod kątem komunikatów oznaczonych "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 na Info.txt przy użyciu kodu 6>. Po otwarciu pliku Info.txt zostanie wyświetlony 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 do zapisania 10 najważniejszych procesów wykorzystania procesora CPU z danych wyjściowych obiektu Get-Process, 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 późniejszą inspekcję komunikatów strumienia informacji w skrypcie.

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

Jeden lub więcej ciągów, których można użyć do sortowania i filtrowania komunikatów dodanych do strumienia informacji za pomocą Write-Information. Ten parametr działa podobnie do parametru Tags w 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

Object

Do tego polecenia cmdlet można przekazać obiekty potokowe, aby przesłać je do strumienia informacji.

Dane wyjściowe

None

To polecenie cmdlet nie zwraca żadnych danych wyjściowych. Zapisuje tylko w strumieniu komunikatów informacyjnych.