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.Streamszadań , 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.

Type:Object
Aliases:Msg, Message
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters: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.

Type:String[]
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

Object

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.