Acerca de la salida remotaAbout Remote Output

DESCRIPCIÓN BREVESHORT DESCRIPTION

Describe cómo interpretar y dar formato a la salida de los comandos remotos.Describes how to interpret and format the output of remote commands.

DESCRIPCIÓN LARGALONG DESCRIPTION

La salida de un comando que se ejecutó en un equipo remoto podría parecerse a que la salida del mismo comando se ejecuta en un equipo local, pero hay algunas diferencias significativas.The output of a command that was run on a remote computer might look like output of the same command run on a local computer, but there are some significant differences.

En este tema se explica cómo interpretar, dar formato y mostrar la salida de los comandos que se ejecutan en equipos remotos.This topic explains how to interpret, format, and display the output of commands that are run on remote computers.

MOSTRAR EL NOMBRE DEL EQUIPODISPLAYING THE COMPUTER NAME

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.When you use the Invoke-Command cmdlet to run a command on a remote computer, the command returns an object that includes the name of the computer that generated the data. El nombre del equipo remoto se almacena en la propiedad PSComputerName.The remote computer name is stored in the PSComputerName property.

Para muchos comandos, el PSComputerName se muestra de forma predeterminada.For many commands, the PSComputerName is displayed by default. Por ejemplo, el siguiente comando ejecuta un comando Get-Culture en dos equipos remotos, Server01 y Server02.For example, the following command runs a Get-Culture command on two remote computers, Server01 and Server02. La salida, que aparece a continuación, incluye los nombres de los equipos remotos en los que se ejecutó el comando.The output, which appears below, includes the names of the remote computers on which the command ran.

C:\PS> invoke-command -script {get-culture} -comp 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.You can use the HideComputerName parameter of Invoke-Command to hide the PSComputerName property. Este parámetro está diseñado para los comandos que recopilan datos de un solo equipo remoto.This parameter is designed for commands that collect data from only one remote computer.

El siguiente comando ejecuta un comando Get-Culture en el equipo remoto Server01.The following command runs a Get-Culture command on the Server01 remote computer. Usa el parámetro HideComputerName para ocultar la propiedad PSComputerName y las propiedades relacionadas.It uses the HideComputerName parameter to hide the PSComputerName property and related properties.

C:\PS> invoke-command -scr {get-culture} -comp Server01 -HideComputerName

LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

También puede mostrar la propiedad PSComputerName si no se muestra de forma predeterminada.You can also display the PSComputerName property if it is not displayed by default.

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.For example, the following commands use the Format-Table cmdlet to add the PSComputerName property to the output of a remote Get-Date command.

$dates = invoke-command -script {get-date} -computername Server01, Server02
$dates | format-table DateTime, PSComputerName -auto

DateTime                            PSComputerName
--------                            --------------
Monday, July 21, 2008 7:16:58 PM    Server01
Monday, July 21, 2008 7:16:58 PM    Server02

MOSTRAR LA PROPIEDAD MACHINENAMEDISPLAYING THE MACHINENAME PROPERTY

Varios cmdlets, entre los que se incluyen Get-Process, Get-Service y Get-EventLog, tienen un parámetro ComputerName que obtiene los objetos de un equipo remoto.Several cmdlets, including Get-Process, Get-Service, and Get-EventLog, have a ComputerName parameter that gets the objects on a remote computer. Estos cmdlets no usan la comunicación remota de PowerShell, por lo que puede usarlos incluso en equipos que no estén configurados para la comunicación remota en Windows PowerShell.These cmdlets do not use PowerShell remoting, so you can use them even on computers that are not configured for remoting in Windows PowerShell.

Los objetos devueltos por estos cmdlets almacenan el nombre del equipo remoto en la propiedad MachineName.The objects that these cmdlets return store the name of the remote computer in the MachineName property. (Estos objetos no tienen una propiedad PSComputerName).(These objects do not have a PSComputerName property.)

Por ejemplo, este comando obtiene el proceso de PowerShell en los equipos remotos Server01 y Server02.For example, this command gets the PowerShell process on the Server01 and Server02 remote computers. La pantalla predeterminada no incluye la propiedad MachineName.The default display does not include the MachineName property.

C:\PS> get-process PowerShell -computername server01, server02

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
920      38    97524     114504   575     9.66   2648 PowerShell
194       6    24256      32384   142            3020 PowerShell
352      27    63472      63520   577     3.84   4796 PowerShell

Puede usar el cmdlet Format-Table para mostrar la propiedad MachineName de los objetos de proceso.You can use the Format-Table cmdlet to display the MachineName property of the process objects.

Por ejemplo, el siguiente comando guarda los procesos en la variable $p y, a continuación, usa un operador de canalización (|) para enviar los procesos de $p al comando Format-Table.For example, the following command saves the processes in the $p variable and then uses a pipeline operator (|) to send the processes in $p to the Format-Table command. El comando usa el parámetro Property de Format-Table para incluir la propiedad MachineName en la pantalla.The command uses the Property parameter of Format-Table to include the MachineName property in the display.

C:\PS> $p = get-process PowerShell -comp Server01, Server02
C:\PS> $P | format-table -property ID, ProcessName, MachineName -auto

Id ProcessName MachineName
-- ----------- -----------
2648 PowerShell  Server02
3020 PowerShell  Server01
4796 PowerShell  Server02

El siguiente comando más complejo agrega la propiedad MachineName a la presentación de proceso predeterminada.The following more complex command adds the MachineName property to the default process display. Utiliza tablas hash para especificar propiedades calculadas.It uses hash tables to specify calculated properties. Afortunadamente, no tiene que entenderlo para usarlo.Fortunately, you do not have to understand it to use it.

(Observe que el acento grave ['] es el carácter de continuación).(Note that the backtick [`] is the continuation character.)

C:\PS> $p = get-process PowerShell -comp Server01, Server02

C:\PS> $p | format-table -property Handles, `
@{Label="NPM(K)";Expression={int}}, `
@{Label="PM(K)";Expression={int}}, `
@{Label="WS(K)";Expression={int}}, `
@{Label="VM(M)";Expression={int}}, `
@{Label="CPU(s)";Expression={if ($.CPU -ne $()){ $.CPU.ToString("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  Server02
192      6 24132  32028   140        3020 PowerShell  Server01
438     26 48436  59132   565        4796 PowerShell  Server02

OBJETOS DESERIALIZADOSDESERIALIZED OBJECTS

Al ejecutar comandos remotos que generan la salida, la salida del comando se transmite a través de la red al equipo local.When you run remote commands that generate output, the command output is transmitted across the network back to the local computer.

Dado que la mayoría de los objetos de marco de trabajo de Microsoft .NET (como los objetos que devuelven los cmdlets de PowerShell) no se pueden transmitir a través de la red, los objetos activos se "serializan".Because most live Microsoft .NET Framework objects (such as the objects that PowerShell cmdlets return) cannot be transmitted over the network, the live objects are "serialized". En otras palabras, los objetos activos se convierten en representaciones XML del objeto y sus propiedades.In other words, the live objects are converted into XML representations of the object and its properties. A continuación, el objeto serializado basado en XML se transmite a través de la red.Then, the XML-based serialized object is transmitted across the network.

En el equipo local, PowerShell recibe el objeto serializado basado en XML y lo "deserializa" convirtiendo el objeto basado en XML en un objeto de .NET Framework estándar.On the local computer, PowerShell receives the XML-based serialized object and "deserializes" it by converting the XML-based object into a standard .NET Framework object.

Sin embargo, el objeto deserializado no es un objeto activo.However, the deserialized object is not a live object. Es una instantánea del objeto en el momento en que se serializó e incluye propiedades pero no métodos.It is a snapshot of the object at the time that it was serialized, and it includes properties but no methods. Puede usar y administrar estos objetos en PowerShell, incluidos pasarlos en canalizaciones, mostrar las propiedades seleccionadas y darles formato.You can use and manage these objects in PowerShell, including passing them in pipelines, displaying selected properties, and formatting them.

La mayoría de los objetos deserializados se formatean automáticamente para que los muestren las entradas de los archivos Types.ps1XML o Format.ps1XML.Most deserialized objects are automatically formatted for display by entries in the Types.ps1xml or Format.ps1xml files. Sin embargo, es posible que el equipo local no tenga archivos de formato para todos los objetos deserializados que se generaron en un equipo remoto.However, the local computer might not have formatting files for all of the deserialized objects that were generated on a remote computer. Cuando no se da formato a los objetos, todas las propiedades de cada objeto aparecen en la consola de en una lista de transmisión por secuencias.When objects are not formatted, all of the properties of each object appear in the console in a streaming list.

Cuando los objetos no tienen el formato automático, puede usar los cmdlets de formato, como Format-Table o Format-List, para dar formato y mostrar las propiedades seleccionadas.When objects are not formatted automatically, you can use the formatting cmdlets, such as Format-Table or Format-List, to format and display selected properties. O bien, puede usar el cmdlet Out-GridView para mostrar los objetos en una tabla.Or, you can use the Out-GridView cmdlet to display the objects in a table.

Además, si ejecuta un comando en un equipo remoto que usa cmdlets que no tiene en el equipo local, es posible que los objetos devueltos por el comando no tengan el formato correcto porque no tiene los archivos de formato para esos objetos en el equipo.Also, if you run a command on a remote computer that uses cmdlets that you do not have on your local computer, the objects that the command returns might not be formatted properly because you do not have the formatting files for those objects on your computer. Para obtener datos de formato de otro equipo, use los cmdlets Get-FormatData y Export-FormatData.To get formatting data from another computer, use the Get-FormatData and Export-FormatData cmdlets.

Algunos tipos de objetos, como los objetos DirectoryInfo y los GUID, se convierten de nuevo en objetos activos cuando se reciben.Some object types, such as DirectoryInfo objects and GUIDs, are converted back into live objects when they are received. Estos objetos no necesitan ningún control o formato especial.These objects do not need any special handling or formatting.

ORDENAR LOS RESULTADOSORDERING THE RESULTS

El orden de los nombres de equipo en el parámetro ComputerName de cmdlets determina el orden en el que PowerShell se conecta a los equipos remotos.The order of the computer names in the ComputerName parameter of cmdlets determines the order in which PowerShell connects to the remote computers. Sin embargo, los resultados aparecen en el orden en que el equipo local los recibe, lo que puede ser un orden diferente.However, the results appear in the order in which the local computer receives them, which might be a different order.

Para cambiar el orden de los resultados, use el cmdlet Sort-Object.To change the order of the results, use the Sort-Object cmdlet. Puede ordenar por la propiedad PSComputerName o MachineName.You can sort on the PSComputerName or MachineName property. También puede ordenar por otra propiedad del objeto para que los resultados de distintos equipos se intercalan.You can also sort on another property of the object so that the results from different computers are interspersed.

CONSULTE TAMBIÉNSEE ALSO

about_Remoteabout_Remote

about_Remote_Variablesabout_Remote_Variables

Format-TableFormat-Table

Get-ProcessGet-Process

Get-ServiceGet-Service

Invoke-CommandInvoke-Command

Select-ObjectSelect-Object