Write-Information
Especifica cómo PowerShell controla los datos del flujo de información de un comando.
Sintaxis
Write-Information
[-MessageData] <Object>
[[-Tags] <String[]>]
[<CommonParameters>]
Description
El cmdlet Write-Information
especifica cómo PowerShell controla los datos del flujo de información de un comando.
Windows PowerShell 5.0 presenta un flujo de información estructurado nuevo. 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 "[Nombre de secuencia]:". Esto estaba pensado para la brevedad y la limpieza visual.
El valor de la variable de preferencia $InformationPreference
determina si el mensaje que se proporciona a 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 mensajes informativos.
Si no desea cambiar el valor de $InformationPreference
, puede sobrescribir su valor agregando el parámetro común InformationAction al comando. Para obtener más información, vea about_Preference_Variables y about_CommonParameters.
Nota
A partir de Windows PowerShell 5.0, Write-Host
es un contenedor para Write-Information
Esto le permite usar Write-Host
para emitir la salida al flujo de información. Esto permite capturar o suprimir los datos escritos mediante Write-Host
a la vez que se conserva la compatibilidad con versiones anteriores. Para obtener más información, consulte Host de escritura
Ejemplos
Ejemplo 1: Escribir información para obtener resultados
En este ejemplo, se muestra un mensaje informativo, «Procesos que comienzan con 'P'», antes de ejecutar el comando Get-Process
para buscar todos los procesos que tienen un valor del Nombre que comienza por "p".
Dado que la variable $InformationPreference
sigue estando establecida en su valor predeterminado, SilentlyContinue, agregue el parámetro InformationAction para invalidar el valor de $InformationPreference
y mostrar el mensaje. El valor de InformationAction es Continue, es decir, 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, usará Write-Information
para que los usuarios sepan que tendrán que ejecutar otro comando después de que hayan terminado 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 "Instructions"
, el mensaje se encuentra 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 para Info.txt
mediante el código 6>
. Al abrir el archivo Info.txt
, verá el texto "Aquí va".
function Test-Info
{
Get-Process P*
Write-Information "Here you go"
}
Test-Info 6> Info.txt
Ejemplo 4: Pasar el objeto para escribir información
En este ejemplo, puede usar Write-Information
para escribir los 10 procesos de uso de CPU más altos desde la salida del objeto Get-Process
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.
Tipo: | Object |
Alias: | Msg, Message |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-Tags
Una o varias cadenas que puede usar para ordenar y filtrar los mensajes que ha agregado al flujo de información con Write-Information
. Este parámetro funciona de forma similar al parámetro de Etiquetas en New-ModuleManifest
.
Tipo: | String[] |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalizar objetos a través del flujo de información para pasarlos a este cmdlet.
Salidas
None
Este cmdlet no devuelve ninguna salida. Solo escribe en la secuencia de mensajes de información.