RUBRIQUE
    about_Remote_Output

DESCRIPTION COURTE
    Décrit comment interpréter et mettre en forme la sortie de 
    commandes distantes.

DESCRIPTION LONGUE
    La sortie d'une commande exécutée sur un ordinateur distant peut 
    ressembler à celle de la même commande exécutée sur un ordinateur 
    local, mais il existe des différences significatives.

    Cette rubrique explique comment interpréter, mettre en forme et 
    afficher la sortie des commandes exécutées sur les ordinateurs 
    distants.

                    
 AFFICHAGE DU NOM DE L'ORDINATEUR

    Lorsque vous utilisez l'applet de commande Invoke-Command pour 
    exécuter une commande sur un ordinateur distant, la commande 
    retourne un objet qui inclut le nom de l'ordinateur qui a généré 
    les données. Le nom de l'ordinateur distant est stocké dans la 
    propriété PSComputerName.

    Pour de nombreuses commandes, la propriété PSComputerName est 
    affichée par défaut. Par exemple, la commande suivante exécute 
    une commande Get-Culture sur deux ordinateurs distants, Server01 
    et Server02. La sortie, qui s'affiche ci-dessous, inclut les noms 
    des ordinateurs distants sur lesquels la commande est exécutée.

        C:\PS> invoke-command -script {get-culture} -comp Server01, Server02

        LCID  Name    DisplayName                PSComputerName
        ----  ----    -----------                --------------
        1033  en-US   Anglais (États-Unis)       Server01
        1033  es-AR   Espagnol (Argentine)       Server02

    
    Vous pouvez utiliser le paramètre HideComputerName de l'applet de 
    commande Invoke-Command pour masquer la propriété PSComputerName. 
    Ce paramètre est conçu pour les commandes qui rassemblent des 
    données d'un seul ordinateur distant.

    La commande suivante exécute une commande Get-Culture sur 
    l'ordinateur distant Server01. Elle utilise le paramètre 
    HideComputerName pour masquer la propriété PSComputerName et les 
    propriétés associées.


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

        LCID             Name             DisplayName
        ----             ----             -----------
        1033             en-US            Anglais (États-Unis)



     Vous pouvez également afficher la propriété PSComputerName si 
     elle n'est pas affichée par défaut. 

     Par exemple, les commandes suivantes utilisent l'applet de 
     commande Format-Table pour ajouter la propriété PSComputerName à 
     la sortie d'une commande Get-Date distante.

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

        DateTime                           PSComputerName
        --------                           --------------
        Lundi 21 juillet 2008 19:16:58     Server011
        Lundi 21 juillet 2008 19:16:58     Server02      


 AFFICHAGE DE LA PROPRIÉTÉ MACHINENAME

    Plusieurs applets de commande, notamment Get-Process, Get-Service 
    et Get-EventLog, ont un paramètre ComputerName qui obtient les 
    objets sur un ordinateur distant. Ces applets de commande n'utilisant 
    pas la communication à distance Windows PowerShell, vous pouvez 
    les utiliser même su les ordinateurs qui ne sont pas configurés 
    pour la communication à distance dans Windows PowerShell.

    Les objets retournés par ces applets de commande stockent le nom 
    de l'ordinateur distant dans la propriété MachineName. (Ces objets 
    n'ont pas de propriété PSComputerName.)

    Par exemple, cette commande obtient le processus PowerShell sur 
    les ordinateurs distants Server01 et Server02. L'affichage par 
    défaut n'inclut pas la propriété MachineName. 

        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 processus. 

    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. La 
    commande utilise le paramètre Property de Format-Table pour 
    inclure la propriété MachineName dans l'affichage.


        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 plus complexe suivante ajoute la propriété 
    MachineName à l'affichage de processus par défaut. Elle utilise 
    des tables de hachage pour spécifier des propriétés calculées. 
    Heureusement, vous n'avez pas à la comprendre pour l'utiliser. 
    (Notez que le backtick [`] est le caractère de continuation.)

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

        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.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ÉS
    Lorsque vous exécutez des commandes distantes qui génèrent une 
    sortie, la sortie de la commande est retransmise via le réseau à 
    l'ordinateur local. 

    Étant donné que la plupart des objets Microsoft .NET Framework en 
    direct (tel que les objets retournés par les applets de commande 
    Windows PowerShell) ne peuvent pas être transmis sur le réseau, 
    ils sont " sérialisés ". En d'autres termes, les objets en direct 
    sont convertis en représentations XML de l'objet et ses propriétés. 
    L'objet sérialisé XML est ensuite transmis via le réseau. 

    Sur l'ordinateur local, Windows PowerShell reçoit l'objet sérialisé 
    XML et le " désérialise " en le convertissant en un objet .NET 
    Framework standard.

    Toutefois, l'objet désérialisé n'est pas un objet en direct. Il 
    s'agit d'une capture instantanée de l'objet au moment où il a été 
    sérialisé et elle inclut les propriétés, mais pas les méthodes. 
    Vous pouvez utiliser et gérer ces objets dans Windows PowerShell, 
    notamment en les passant dans les pipelines, en affichant des 
    propriétés sélectionnées et en les mettant en forme.

    La plupart des objets désérialisés sont automatiquement mis en 
    forme pour l'affichage selon les entrées dans les fichiers 
    Types.ps1xml ou Format.ps1xml. Toutefois, l'ordinateur local peut 
    ne pas avoir de fichiers de mise en forme pour tous les objets 
    désérialisés générés sur un ordinateur distant. Lorsque les 
    objets ne sont pas mis en forme, toutes les propriétés de chaque 
    objet apparaissent dans la console dans une liste de diffusion en 
    continu. 

    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. Vous pouvez également utiliser 
    l'applet de commande Out-GridView pour afficher les objets dans 
    une table.

    Par ailleurs, 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 retournés par la commande 
    peuvent ne pas être mis en forme correctement, car vous ne 
    disposez pas des fichiers de mise en forme pour ces objets sur 
    votre ordinateur. Pour obtenir les données de mise en forme d'un 
    autre ordinateur, utilisez les applets de commande Get-FormatData 
    et Export-FormatData. 

    Certains types d'objets, tels que les objets DirectoryInfo et 
    GUID, sont reconvertis en objets en direct lorsqu'ils sont reçus. 
    Ces objets ne nécessitent aucune gestion ni mise en forme spéciale.  



 CLASSEMENT DES RÉSULTATS
    L'ordre des noms d'ordinateurs dans le paramètre ComputerName 
    des applets de commande détermine l'ordre dans lequel Windows 
    PowerShell se connecte aux ordinateurs distants. Toutefois, les 
    résultats apparaissent dans l'ordre dans lequel l'ordinateur 
    local les reçoit, qui peut être un ordre différent.

    Pour modifier l'ordre des résultats, utilisez l'applet de commande 
    Sort-Object. Vous pouvez effectuer le tri en fonction de la propriété 
    PSComputerName ou MachineName. Vous pouvez également trier selon une 
    autre propriété de l'objet afin d'intercaler les résultats de 
    différents ordinateurs.



VOIR AUSSI
    about_Remote
    Format-Table
    Get-EventLog
    Get-Process
    Get-Service
    Get-WmiObject
    Invoke-Command
    Out-GridView
    Select-Object




Table des matières