Write-Information

Anger hur PowerShell hanterar informationsströmdata för ett kommando.

Syntax

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

Description

Cmdleten Write-Information anger hur PowerShell hanterar informationsströmdata för ett kommando.

Windows PowerShell 5.0 introducerar en ny, strukturerad informationsström. Du kan använda den här strömmen för att överföra strukturerade data mellan ett skript och dess anropare eller värdprogrammet. Write-Information låter dig lägga till ett informationsmeddelande i strömmen och ange hur PowerShell hanterar informationsströmdata för ett kommando. Informationsströmmar fungerar också för PowerShell.Streams, jobb och schemalagda aktiviteter.

Kommentar

Informationsströmmen följer inte standardkonventionen om prefix för dess meddelanden med "[Stream Name]:". Detta var avsett för korthet och visuell renlighet.

Värdet $InformationPreference för inställningsvariabeln avgör om meddelandet som du anger Write-Information visas vid den förväntade tidpunkten i ett skripts åtgärd. Eftersom standardvärdet för den här variabeln är SilentlyContinue visas inte informationsmeddelanden som standard. Om du inte vill ändra värdet $InformationPreferenceför kan du åsidosätta dess värde genom att lägga till den vanliga parametern InformationAction i kommandot. Mer information finns i about_Preference_Variables och about_CommonParameters.

Kommentar

Från och med Windows PowerShell 5.0 Write-Host är en omslutning för Write-Information Detta gör att du kan använda Write-Host för att generera utdata till informationsströmmen. Detta möjliggör insamling eller undertryckning av data som skrivs med samtidigt Write-Host som bakåtkompatibilitet bevaras. Mer information finns i Write-Host

Exempel

Exempel 1: Skriv information för Get-results

I det här exemplet visar du ett informationsmeddelande, "Processer som börjar med "P", innan du kör Get-Process kommandot för att hitta alla processer som har ett namnvärde som börjar med "p". Eftersom variabeln $InformationPreference fortfarande är inställd på standardvärdet SilentlyContinue lägger du till parametern InformationAction för att åsidosätta $InformationPreference värdet och visa meddelandet. InformationAction-värdet är Fortsätt, vilket innebär att meddelandet visas, men skriptet eller kommandot fortsätter om det inte är klart än.

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

Exempel 2: Skriv information och tagga den

I det här exemplet använder Write-Information du för att meddela användarna att de behöver köra ett annat kommando när de har kört det aktuella kommandot. Exemplet lägger till taggen "Instructions" i informationsmeddelandet. När du har kört det här kommandot finns meddelandet i resultatet när du söker i informationsströmmen efter taggade "Instructions"meddelanden.

$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.

Exempel 3: Skriva information till en fil

I det här exemplet omdirigerar du informationsströmmen i funktionen till att Info.txt använda koden 6>. När du öppnar Info.txt filen visas texten "Here you go".

function Test-Info
{
    Get-Process P*
    Write-Information "Here you go"
}
Test-Info 6> Info.txt

Exempel 4: Skicka objekt för att skriva information

I det här exemplet kan du använda Write-Information för att skriva de 10 högsta processoranvändningsprocesserna från objektutdata Get-Process som har passerat genom flera pipelines.

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}

Exempel 5: Spara informationsposter i en variabel

Med parametern InformationVariable kan du spara informationsposter i en variabel. På så sätt kan du inspektera informationsströmmeddelandena senare i skriptet.

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

Parametrar

-MessageData

Anger ett informationsmeddelande som du vill visa för användare när de kör ett skript eller kommando. För bästa resultat omger du informationsmeddelandet inom citattecken.

Type:Object
Aliases:Msg, Message
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Tags

En eller flera strängar som du kan använda för att sortera och filtrera meddelanden som du har lagt till i informationsströmmen med Write-Information. Den här parametern fungerar på samma sätt som parametern Taggar i New-ModuleManifest.

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

Indata

Object

Du kan skicka objekt till informationsströmmen till den här cmdleten.

Utdata

None

Den här cmdleten returnerar inga utdata. Den skriver bara till informationsmeddelandeströmmen.