Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Descripción breve
Describe cómo interpretar y dar formato a la salida de los comandos remotos.
Descripción larga
La salida de un comando que se ejecutó en un equipo remoto podría ser similar a la salida del mismo comando ejecutado en un equipo local, pero hay algunas diferencias significativas.
En este tema se explica cómo interpretar, dar formato y mostrar la salida de los comandos que se ejecutan en equipos remotos.
Mostrar el nombre del equipo
Cuando se usa el cmdlet Invoke-Command para ejecutar un comando en un equipo remoto, el comando devuelve un objeto que incluye el nombre del equipo que generó los datos. La propiedad PSComputerName contiene el nombre del equipo remoto.
Para muchos comandos, PSComputerName se muestra de forma predeterminada. Por ejemplo, el siguiente comando ejecuta un comando Get-Culture en dos equipos remotos, Server01 y Server02. La salida, que aparece a continuación, incluye los nombres de los equipos remotos en los que se ejecutó el comando.
Invoke-Command -ScriptBlock {Get-Culture} -ComputerName Server01, Server02
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) Server01
1033 es-AR Spanish (Argentina) Server02
Puede usar el parámetro HideComputerName de Invoke-Command para ocultar la propiedad PSComputerName de. Este parámetro está diseñado para comandos que recopilan datos de un solo equipo remoto.
El siguiente comando ejecuta un comando Get-Culture en el equipo remoto Server01. Usa el parámetro HideComputerName para ocultar la propiedad psComputerName y las propiedades relacionadas.
$invokeCommandSplat = @{
ScriptBlock = {Get-Culture}
ComputerName = 'Server01'
HideComputerName = $true
}
Invoke-Command @invokeCommandSplat
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
También puede mostrar la propiedad PSComputerName si no se muestra de forma predeterminada.
Por ejemplo, los siguientes comandos usan el cmdlet Format-Table para agregar la propiedad PSComputerName a la salida de un comando de Get-Date remoto.
$invokeCommandSplat = @{
ScriptBlock = {Get-Date}
ComputerName = 'Server01', 'Server02'
}
Invoke-Command @invokeCommandSplat |
Format-Table DateTime, PSComputerName -AutoSize
DateTime PSComputerName
-------- --------------
Monday, July 21, 2008 7:16:58 PM Server01
Monday, July 21, 2008 7:16:58 PM Server02
Objetos deserializados
Al ejecutar comandos remotos que generan la salida, la salida del comando se transmite a través de la red al equipo local.
Dado que los objetos .NET dinámicos no se pueden transmitir a través de la red, los objetos dinámicos se serializan o se convierten en representaciones XML del objeto y sus propiedades. PowerShell transmite el objeto serializado a través de la red.
En el equipo local, PowerShell recibe el objeto serializado y deserializa convierte el objeto serializado en un objeto .NET estándar.
Sin embargo, el objeto deserializado no es un objeto activo. Es una instantánea del objeto en el momento de la serialización. El objeto deserializado incluye propiedades, pero no métodos. Puede usar y administrar estos objetos en PowerShell, incluidos pasarlos en canalizaciones, mostrar las propiedades seleccionadas y aplicarles formato.
La mayoría de los objetos deserializados tienen formato automático para mostrarlos mediante entradas en los archivos Types.ps1xml o Format.ps1xml. Sin embargo, es posible que el equipo local no tenga archivos de formato para todos los objetos que se generaron en un equipo remoto. Cuando los objetos no tienen formato, todas las propiedades de cada objeto aparecen en la consola de una lista de streaming.
Cuando los objetos no tienen formato automático, puede usar los cmdlets de formato, como Format-Table o Format-List, para dar formato y mostrar las propiedades seleccionadas. O bien, puede usar el cmdlet Out-GridView para mostrar los objetos de una tabla.
Cuando ejecuta un comando en un equipo remoto que usa cmdlets que no tiene en el equipo local, es posible que los objetos que devuelve el comando no tengan el formato esperado si no tiene los archivos de formato para esos tipos de objetos en el equipo. Use los cmdlets Get-FormatData y Export-FormatData para obtener datos de formato de otro equipo.
Algunos tipos de objetos, como DirectoryInfo objetos y GUID, se convierten de nuevo en objetos activos cuando se reciben. Estos objetos no necesitan ningún control ni formato especiales.
Ordenación de los resultados
El orden de los nombres de equipo del ComputerName parámetro de cmdlets determina el orden en el que PowerShell se conecta a los equipos remotos. Sin embargo, los resultados aparecen en el orden en que se reciben los datos de los equipos remotos.
Puede usar el cmdlet Sort-Object para ordenar los resultados en el PSComputerName. Cuando se realiza cualquier otra propiedad del objeto, los resultados de diferentes equipos se intercalan entrelazados en la salida.
Consulte también
- about_Remote
- about_Remote_Variables
- Invoke-Command
- Get-EventLog
- Out-GridView
- Select-Object
- get-process
- Get-Service
- formato de tabla
- Get-WmiObject