Compartir a través de


Write-Information

Especifica cómo PowerShell controla los datos de flujo de información de un comando.

Syntax

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

Description

El Write-Information cmdlet especifica cómo PowerShell controla los datos del flujo de información de un comando.

Windows PowerShell 5.0 presenta un nuevo flujo de información estructurado. Puede usar esta secuencia para transmitir datos estructurados entre un script y sus llamadores o la aplicación host. Write-Information permite agregar un mensaje informativo a la secuencia y especificar cómo PowerShell controla los datos del flujo de información para un comando. Los flujos de información también funcionan para PowerShell.Streams, trabajos y tareas programadas.

Nota

La secuencia de información no sigue la convención estándar de prefijo de sus mensajes con "[Stream Nombre]:". Esto estaba pensado para la brevedad y la limpieza visual.

El $InformationPreference valor de la variable de preferencia determina si el mensaje que proporciona Write-Information se muestra en el punto esperado en la operación de un script. Dado que el valor predeterminado de esta variable es SilentlyContinue, de forma predeterminada, no se muestran los mensajes informativos. Si no desea cambiar el valor de $InformationPreference, puede invalidar su valor agregando el parámetro común InformationAction al comando. Para obtener más información, consulte about_Preference_Variables y about_CommonParameters.

Nota

A partir de Windows PowerShell 5.0, Write-Host es un contenedor para Write-Information Esto permite usar Write-Host para emitir la salida al flujo de información. Esto permite la captura o supresión de los datos escritos mediante Write-Host , a la vez que se conserva la compatibilidad con versiones anteriores. Para obtener más información, consulte Write-Host

Ejemplos

Ejemplo 1: Escribir información para obtener resultados

En este ejemplo, se muestra un mensaje informativo, "Procesos que comienzan por "P", antes de ejecutar el Get-Process comando para buscar todos los procesos que tienen un valor Name que comienza por "p". Dado que la $InformationPreference variable todavía está establecida en su valor predeterminado, SilentlyContinue, se agrega el parámetro InformationAction para invalidar el $InformationPreference valor y se muestra el mensaje. El valor informationAction es Continue, lo que significa que se muestra el mensaje, pero el script o comando continúa, si aún no ha finalizado.

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

Ejemplo 2: Escribir información y etiquetarla

En este ejemplo, se usa Write-Information para que los usuarios sepan que tendrán que ejecutar otro comando después de que terminen de ejecutar el comando actual. En el ejemplo se agrega la etiqueta "Instructions" al mensaje informativo. Después de ejecutar este comando, al buscar en el flujo de información los mensajes etiquetados , el mensaje se encuentra "Instructions"en los resultados.

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

Ejemplo 3: Escribir información en un archivo

En este ejemplo, redirigirá el flujo de información de la función a Info.txt mediante el código 6>. Al abrir el Info.txt archivo, verá el texto "Aquí va".

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

Ejemplo 4: Pasar objeto para escribir información

En este ejemplo, puede usar Write-Information para escribir los 10 procesos de uso de CPU más altos de la Get-Process salida del objeto que ha pasado a través de varias canalizaciones.

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}

Ejemplo 5: Guardar registros de información en una variable

Con el parámetro InformationVariable , puede guardar registros de información en una variable. Esto le permite inspeccionar los mensajes de flujo de información más adelante en el script.

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

Parámetros

-MessageData

Especifica un mensaje informativo que desea mostrar a los usuarios a medida que ejecutan un script o un comando. Para obtener los mejores resultados, incluya el mensaje informativo entre comillas.

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

-Tags

Una o varias cadenas que puede usar para ordenar y filtrar los mensajes que ha agregado a la secuencia de información con Write-Information. Este parámetro funciona de forma similar al parámetro Tags de New-ModuleManifest.

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

Entradas

Object

Puede canalizar objetos para pasar al flujo de información a este cmdlet.

Salidas

None

Este cmdlet no devuelve ningún resultado. Solo escribe en la secuencia de mensajes de información.