Udostępnij za pośrednictwem


Write-Information

Program PowerShell określa, jak obsługiwane są dane strumienia informacji dla 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, prac i zaplanowanych zadań.

Notatka

Strumień informacji nie jest zgodny ze standardową konwencją poprzedzania komunikatów prefiksem "[Nazwa strumienia]:". To zostało zaprojektowane w celu zwięzłości i przejrzystości wizualnej.

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ć jej wartość, dodając wspólny parametr InformationAction do polecenia. Aby uzyskać więcej informacji, zobacz about_Preference_Variables i about_CommonParameters.

Notatka

Począwszy od programu Windows PowerShell 5.0, Write-Host jest obudową dla Write-Information. Umożliwia to użycie Write-Host do przekazywania danych wyjściowych do strumienia informacji. Umożliwia to przechwytywanie lub tłumienie danych zapisywanych przy użyciu Write-Host, zachowując kompatybilność wsteczną. Aby uzyskać więcej informacji, zobacz Write-Host

Write-Information jest również obsługiwanym działaniem przepływu pracy w programie Windows PowerShell 5.1.

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 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 zostanie wyświetlony, ale skrypt lub polecenie kontynuuje wykonywanie, 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 do 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. Zapisywanie rekordów informacji w zmiennej

Za pomocą parametru InformationVariable można zapisać rekordy informacji w zmiennej. Dzięki temu możesz później w skrypcie przeanalizować komunikaty strumienia informacji.

$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

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
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Tags

Określa prosty ciąg, którego 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

None

Nie można przesyłać obiektów do tego polecenia cmdlet.

Dane wyjściowe

None

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