À propos de la sortie à distanceAbout Remote Output

DESCRIPTION COURTESHORT DESCRIPTION

Décrit comment interpréter et mettre en forme la sortie des commandes distantes.Describes how to interpret and format the output of remote commands.

DESCRIPTION DÉTAILLÉELONG DESCRIPTION

La sortie d’une commande exécutée sur un ordinateur distant peut ressembler à la sortie de la même commande exécutée sur un ordinateur local, mais il existe des différences significatives.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.

Cette rubrique explique comment interpréter, mettre en forme et afficher la sortie des commandes exécutées sur des ordinateurs distants.This topic explains how to interpret, format, and display the output of commands that are run on remote computers.

AFFICHAGE DU NOM DE L’ORDINATEURDISPLAYING THE COMPUTER NAME

Lorsque vous utilisez l’applet de commande Invoke-Command pour exécuter une commande sur un ordinateur distant, la commande retourne un objet qui comprend le nom de l’ordinateur qui a généré les données.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. Le nom de l’ordinateur distant est stocké dans la propriété PSComputerName.The remote computer name is stored in the PSComputerName property.

Pour de nombreuses commandes, PSComputerName est affiché par défaut.For many commands, the PSComputerName is displayed by default. Par exemple, la commande suivante exécute une commande Get-Culture sur deux ordinateurs distants, serveur01 et Server02.For example, the following command runs a Get-Culture command on two remote computers, Server01 and Server02. La sortie, qui apparaît ci-dessous, comprend les noms des ordinateurs distants sur lesquels la commande a été exécutée.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

Vous pouvez utiliser le paramètre HideComputerName de Invoke-Command pour masquer la propriété PSComputerName.You can use the HideComputerName parameter of Invoke-Command to hide the PSComputerName property. Ce paramètre est conçu pour les commandes qui collectent des données à partir d’un seul ordinateur distant.This parameter is designed for commands that collect data from only one remote computer.

La commande suivante exécute une commande Get-Culture sur l’ordinateur distant SERVEUR01.The following command runs a Get-Culture command on the Server01 remote computer. Elle utilise le paramètre HideComputerName pour masquer la propriété PSComputerName et les propriétés associées.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)

Vous pouvez également afficher la propriété PSComputerName si elle n’est pas affichée par défaut.You can also display the PSComputerName property if it is not displayed by default.

Par exemple, les commandes suivantes utilisent l’applet de commande Format-Table pour ajouter la propriété PSComputerName à la sortie d’une commande de Get-Date à distance.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

AFFICHAGE DE LA PROPRIÉTÉ MACHINENAMEDISPLAYING THE MACHINENAME PROPERTY

Plusieurs applets de commande, y compris obtenir-process, obtenir-service et obtenir-EventLog, ont un paramètre ComputerName qui obtient les objets sur un ordinateur distant.Several cmdlets, including Get-Process, Get-Service, and Get-EventLog, have a ComputerName parameter that gets the objects on a remote computer. Ces applets de commande n’utilisent pas la communication à distance PowerShell. vous pouvez donc les utiliser même sur des ordinateurs qui ne sont pas configurés pour la communication à distance dans 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.

Les objets que ces applets de commande retournent stockent le nom de l’ordinateur distant dans la propriété MachineName.The objects that these cmdlets return store the name of the remote computer in the MachineName property. (Ces objets n’ont pas de propriété PSComputerName.)(These objects do not have a PSComputerName property.)

Par exemple, cette commande obtient le processus PowerShell sur les ordinateurs distants SERVEUR01 et Server02.For example, this command gets the PowerShell process on the Server01 and Server02 remote computers. L’affichage par défaut n’inclut pas la propriété 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

Vous pouvez utiliser l’applet de commande Format-Table pour afficher la propriété MachineName des objets de processus.You can use the Format-Table cmdlet to display the MachineName property of the process objects.

Par exemple, la commande suivante enregistre les processus dans la variable $p, puis utilise un opérateur de pipeline (|) pour envoyer les processus dans $p à la commande 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. La commande utilise le paramètre Property de Format-Table pour inclure la propriété MachineName dans l’affichage.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

La commande suivante plus complexe ajoute la propriété MachineName à l’affichage du processus par défaut.The following more complex command adds the MachineName property to the default process display. Il utilise des tables de hachage pour spécifier des propriétés calculées.It uses hash tables to specify calculated properties. Heureusement, vous n’avez pas à le comprendre pour l’utiliser.Fortunately, you do not have to understand it to use it.

(Notez que la Supercycle ['] est le caractère de continuation.)(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

OBJETS DÉSÉRIALISÉSDESERIALIZED OBJECTS

Lorsque vous exécutez des commandes distantes qui génèrent une sortie, le résultat de la commande est transmis sur le réseau à l’ordinateur local.When you run remote commands that generate output, the command output is transmitted across the network back to the local computer.

Étant donné que la plupart des objets en direct Microsoft .NET Framework (tels que les objets retournés par les applets de commande PowerShell) ne peuvent pas être transmis sur le réseau, les objets actifs sont « sérialisés ».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 d’autres termes, les objets actifs sont convertis en représentations XML de l’objet et de ses propriétés.In other words, the live objects are converted into XML representations of the object and its properties. Ensuite, l’objet sérialisé XML est transmis sur le réseau.Then, the XML-based serialized object is transmitted across the network.

Sur l’ordinateur local, PowerShell reçoit l’objet sérialisé XML et le « désérialise » en convertissant l’objet XML en un objet de .NET Framework standard.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.

Toutefois, l’objet désérialisé n’est pas un objet actif.However, the deserialized object is not a live object. Il s’agit d’un instantané de l’objet au moment où il a été sérialisé, et il comprend des propriétés, mais pas de méthodes.It is a snapshot of the object at the time that it was serialized, and it includes properties but no methods. Vous pouvez utiliser et gérer ces objets dans PowerShell, y compris les transmettre dans des pipelines, afficher les propriétés sélectionnées et les mettre en forme.You can use and manage these objects in PowerShell, including passing them in pipelines, displaying selected properties, and formatting them.

La plupart des objets désérialisés sont automatiquement mis en forme pour être affichés par les entrées dans les fichiers XML Types.ps1XML ou Format.ps1.Most deserialized objects are automatically formatted for display by entries in the Types.ps1xml or Format.ps1xml files. Toutefois, l’ordinateur local n’a peut-être pas de fichier de mise en forme pour tous les objets désérialisés qui ont été générés sur un ordinateur distant.However, the local computer might not have formatting files for all of the deserialized objects that were generated on a remote computer. Lorsque les objets ne sont pas mis en forme, toutes les propriétés de chaque objet s’affichent dans la console dans une liste de diffusion en continu.When objects are not formatted, all of the properties of each object appear in the console in a streaming list.

Lorsque les objets ne sont pas mis en forme automatiquement, vous pouvez utiliser les applets de commande de mise en forme, telles que Format-Table ou format-list, pour mettre en forme et afficher les propriétés sélectionnées.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. Vous pouvez utiliser l’applet de commande Out-GridView pour afficher les objets dans une table.Or, you can use the Out-GridView cmdlet to display the objects in a table.

En outre, si vous exécutez une commande sur un ordinateur distant qui utilise des applets de commande que vous n’avez pas sur votre ordinateur local, les objets renvoyés par la commande peuvent ne pas être correctement mis en forme, car vous ne disposez pas des fichiers de mise en forme de ces objets sur votre ordinateur.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. Pour récupérer des données de mise en forme à partir d’un autre ordinateur, utilisez les applets de commande Get-FormatData et Export-FormatData.To get formatting data from another computer, use the Get-FormatData and Export-FormatData cmdlets.

Certains types d’objets, tels que les objets DirectoryInfo et les GUID, sont reconvertis en objets dynamiques lorsqu’ils sont reçus.Some object types, such as DirectoryInfo objects and GUIDs, are converted back into live objects when they are received. Ces objets n’ont pas besoin d’une gestion ou d’une mise en forme spéciale.These objects do not need any special handling or formatting.

CLASSEMENT DES RÉSULTATSORDERING THE RESULTS

L’ordre des noms d’ordinateur dans le paramètre ComputerName des applets de commande détermine l’ordre dans lequel PowerShell se connecte aux ordinateurs distants.The order of the computer names in the ComputerName parameter of cmdlets determines the order in which PowerShell connects to the remote computers. Toutefois, les résultats s’affichent dans l’ordre dans lequel l’ordinateur local les reçoit, ce qui peut être un ordre différent.However, the results appear in the order in which the local computer receives them, which might be a different order.

Pour modifier l’ordre des résultats, utilisez l’applet de commande Sort-Object.To change the order of the results, use the Sort-Object cmdlet. Vous pouvez effectuer un tri sur la propriété PSComputerName ou MachineName.You can sort on the PSComputerName or MachineName property. Vous pouvez également effectuer un tri sur une autre propriété de l’objet afin que les résultats de différents ordinateurs soient intercalés.You can also sort on another property of the object so that the results from different computers are interspersed.

VOIR AUSSISEE ALSO

about_Remoteabout_Remote

about_Remote_Variablesabout_Remote_Variables

Format-TableFormat-Table

Get-ProcessGet-Process

Get-ServiceGet-Service

Invoke-CommandInvoke-Command

Select-ObjectSelect-Object