Vous êtes sur la page 1sur 4

TEMA

about_Remote_Output
DESCRIPCIN BREVE
Describe cmo interpretar y dar formato a los resultados de
comandos remotos.
DESCRIPCIN DETALLADA
El resultado de un comando ejecutado en un equipo remoto podra
parecer similar al resultado del mismo comando ejecutado en un
equipo local, pero hay algunas diferencias significativas.
En este tema se explica cmo interpretar, dar formato y mostrar
los resultados de los comandos ejecutados 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. El nombre del equipo
remoto se almacena en la propiedad PSComputerName.
Para muchos comandos, la propiedad PSComputerName se muestra de
forma predeterminada. Por ejemplo, el comando siguiente ejecuta
un comando Get-Culture en dos equipos remotos, Servidor01 y
Servidor02. El resultado, que aparece a continuacin, incluye los
nombres de los equipos remotos en los que se ejecut el comando.
C:\PS> invoke-command -script {get-culture} -comp Servidor01, Servidor02
LCID
---1033
1033

Name
---en-US
es-AR

DisplayName
----------Ingls (Estados Unidos)
Espaol (Argentina)

PSComputerName
-------------Server01
Server02

Puede utilizar el parmetro HideComputerName de Invoke-Command


para ocultar la propiedad PSComputerName. Este parmetro se ha
diseado para los comandos que recopilan datos de solo un equipo
remoto.
El comando siguiente ejecuta un comando Get-Culture en el equipo
remoto Servidor01. Utiliza el parmetro HideComputerName para
ocultar la propiedad PSComputerName y las propiedades relacionadas.
C:\PS> invoke-command -scr {get-culture} -comp Servidor01 -HideComputerN
ame
LCID
---1033

Name
---en-US

DisplayName
----------Ingls (Estados Unidos)

Asimismo, puede mostrar la propiedad PSComputerName si no


aparece de forma predeterminada.

Por ejemplo, los comandos siguientes utilizan el cmdlet


Format-Table para agregar la propiedad PSComputerName al
resultado de un comando Get-Date remoto.
C:\PS> $dates = invoke-command -script {get-date} -computername Servidor
01, Servidor02
C:\PS> $dates | format-table DateTime, PSComputerName -auto
DateTime
-------Lunes, 21 de julio de 2008 19:16:58
Lunes, 21 de julio de 2008 19:16:58

PSComputerName
-------------Servidor01
Servidor02

MOSTRAR LA PROPIEDAD MACHINENAME


Varios cmdlets, como Get-Process, Get-Service y Get-EventLog,
tienen un parmetro ComputerName que obtiene los objetos de un
equipo remoto.
Estos cmdlets no utilizan la comunicacin remota de Windows
PowerShell, por lo que puede usarlos en los equipos que no estn
configurados para la comunicacin remota de Windows PowerShell.
Los objetos que estos cmdlets devuelven almacenan el nombre del
equipo remoto en la propiedad MachineName. (Estos objetos no
tienen la propiedad PSComputerName.)
Por ejemplo, este comando obtiene el proceso de PowerShell en los
equipos remotos Servidor01 y Servidor02. De forma predeterminada,
no se muestra la propiedad MachineName.
C:\PS> get-process powershell -computername servidor01, servidor02
Handles NPM(K)
------- -----920
38
194
6
352
27

PM(K)
----97524
24256
63472

WS(K) VM(M)
----- ----114504 575
32384 142
63520 577

CPU(s)
-----9.66
3.84

Id
-2648
3020
4796

ProcessName
----------powershell
powershell
powershell

Puede utilizar el cmdlet Format-Table para mostrar la propiedad


MachineName de los objetos de proceso.
Por ejemplo, el comando siguiente guarda los procesos en la
variable $p y, a continuacin, utiliza un operador de
canalizacin (|) para enviar los procesos guardados en $p al
comando Format-Table. El comando utiliza el parmetro Property de
Format-Table para que se muestre la propiedad MachineName.
C:\PS> $p = get-process powershell -comp Servidor01, Servidor02
C:\PS> $P | format-table -property ID, ProcessName, MachineName -auto
Id
-2648
3020

ProcessName
----------powershell
powershell

MachineName
----------Servidor02
Servidor01

4796 powershell Servidor02


El siguiente comando, que es ms complejo, agrega la propiedad
MachineName a la presentacin predeterminada de los procesos.
Utiliza tablas hash para especificar las propiedades calculadas.
Afortunadamente, no es preciso que lo entienda para poder usarlo.
(Observe que el carcter de acento grave [`] es el carcter de
continuacin.)
C:\PS> $p = get-process powershell -comp Servidor01, Servidor02
C:\PS> $p | format-table -property Handles, `
@{Label="NPM(K)";Expression={[int]($_.NPM/1024)}}, `
@{Label="PM(K)";Expression={[int]($_.PM/1024)}}, `
@{Label="WS(K)";Expression={[int]($_.WS/1024)}}, `
@{Label="VM(M)";Expression={[int]($_.VM/1MB)}}, `
@{Label="CPU(s)";Expression={if ($_.CPU -ne $()){ $_.CPU.ToS
tring("N")}}}, `
Id, ProcessName, MachineName -auto
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName MachineName
------- ------ ----- ----- ----- ------ -- ----------- ----------920
38 97560 114532 576
2648 powershell Servidor02
192
6 24132 32028 140
3020 powershell Servidor01
438
26 48436 59132 565
4796 powershell Servidor02
OBJETOS DESERIALIZADOS
Cuando se ejecutan comandos remotos que generan resultados,
dichos resultados se transmiten al equipo local a travs de la red.
Dado que la mayora de los objetos activos de Microsoft .NET
Framework (como los objetos devueltos por los cmdlets de Windows
PowerShell) no se pueden transmitir a travs de la red, se
"serializan" dichos objetos. En otras palabras, los objetos
activos se convierten en representaciones XML del objeto y sus
propiedades. A continuacin, el objeto serializado basado en XML
se transmite a travs de la red.
En el equipo local, Windows PowerShell recibe el objeto
serializado basado en XML y lo "deserializa" convirtindolo en un
objeto estndar de .NET Framework.
Sin embargo, el objeto deserializado no es un objeto activo. Es
una instantnea del objeto en el momento en que se serializ e
incluye propiedades pero no incluye ningn mtodo. Puede utilizar
y administrar estos objetos en Windows PowerShell, incluso puede
pasarlos a travs de canalizaciones, mostrar determinadas
propiedades y darles formato.
A la mayora de los objetos deserializados se les aplica
automticamente formato mediante entradas de los archivos
Types.ps1xml o Format.ps1xml. Sin embargo, puede que el equipo
local no tenga archivos de formato para todos los objetos
deserializados generados en un equipo remoto. Cuando no se da
formato a los objetos, todas las propiedades de cada objeto
aparecen en la consola como una lista continua.

Cuando no se da formato automticamente a los objetos, puede


utilizar los cmdlets de formato, como Format-Table o Format-List,
para dar formato y mostrar determinadas propiedades. O bien,
puede usar el cmdlet Out-GridView para mostrar los objetos en una
tabla.
Asimismo, si ejecuta un comando en un equipo remoto que utiliza
cmdlets que no existen en el equipo local, puede que no se
aplique un formato correcto a los objetos devueltos por el
comando dado que su equipo no dispone de los archivos de formato
para esos objetos. Para obtener datos de formato de otro equipo,
utilice los cmdlets Get-FormatData y Export-FormatData.
Algunos tipos de objeto, como objetos DirectoryInfo y GUID, se
convierten de nuevo en objetos activos en el momento de
recibirlos. Estos objetos no necesitan ningn tratamiento o
formato especial.

ORDENAR LOS RESULTADOS


El orden de los nombres de equipo en el parmetro ComputerName de
los cmdlets determina el orden en que Windows PowerShell se
conecta a los equipos remotos. Sin embargo, los resultados
aparecen en el orden en que el equipo local los recibe, el cual
podra ser diferente.
Para cambiar el orden de los resultados, utilice el cmdlet
Sort-Object. Puede ordenar por la propiedad PSComputerName o
MachineName. Tambin puede ordenar por otra propiedad del objeto
de modo que se intercalen los resultados de los diferentes equipos.

VEA TAMBIN
about_Remote
Format-Table
Get-EventLog
Get-Process
Get-Service
Get-WmiObject
Invoke-Command
Out-GridView
Select-Object

Vous aimerez peut-être aussi