РАЗДЕЛ
    about_Remote_Output

КРАТКОЕ ОПИСАНИЕ
    Описывает, как интерпретировать и форматировать выходные данные 
    удаленных команд.

ПОЛНОЕ ОПИСАНИЕ
    Выходные данные команды, выполненной на удаленном компьютере, 
    могут выглядеть аналогично выходным данным той же команды, 
    выполненной на локальном компьютере, однако имеется несколько 
    существенных различий.

    В этом разделе описано, как интерпретировать, форматировать 
    и отображать выходные данные команд, выполняемых на удаленных 
    компьютерах.

                    
 ОТОБРАЖЕНИЕ ИМЕНИ КОМПЬЮТЕРА

    При использовании командлета Invoke-Command для выполнения 
    команды на удаленном компьютере команда возвращает объект, 
    включающий имя компьютера, который сформировал данные. Имя 
    удаленного компьютера хранится в свойстве PSComputerName.

    В случае многих команд свойство PSComputerName отображается 
    по умолчанию. Например, следующая команда выполняет команду 
    Get-Culture на двух удаленных компьютерах Server01 и Server02. 
    Представленные ниже выходные данные включают имена удаленных 
    компьютеров, на которых выполнялась команда.

        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

    
    Параметр HideComputerName командлета Invoke-Command можно 
    использовать для скрытия свойства PSComputerName. Этот параметр 
    предназначен для команд, собирающих данные только с одного 
    удаленного компьютера.

    Следующая команда выполняет команду Get-Culture на удаленном 
    компьютере Server01. Параметр HideComputerName используется 
    для скрытия свойства PSComputerName и связанных с ним свойств.


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

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




     Также можно отобразить свойство PSComputerName, если по 
     умолчанию оно не отображается. 

     Например, следующие командлеты с помощью командлета Format-Table 
     добавляют свойство PSComputerName в выходные данные удаленной 
     команды Get-Date.

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

        DateTime                            	  PSComputerName
        --------                           	  --------------
        Понедельник, 21 июля 2008 г., 19:16:58    Server01
        Понедельник, 21 июля 2008 г., 19:16:58    Server02      



 ОТОБРАЖЕНИЕ СВОЙСТВА MACHINENAME

    Некоторые командлеты, включая Get-Process, Get-Service и 
    Get-EventLog, имеют параметр ComputerName, который позволяет 
    получать объекты на удаленном компьютере.
    Эти командлеты не используют удаленное взаимодействие Windows 
    PowerShell, поэтому их можно использовать даже на компьютерах, 
    которые не настроены на удаленное взаимодействие в Windows PowerShell.

    В объектах, возвращаемых этими командлетами, имя удаленного 
    компьютера хранится в свойстве MachineName. (Эти объекты не имеют 
    свойства PSComputerName.)

    Например, эта команда получает процесс PowerShell на удаленных 
    компьютерах Server01 и Server02. По умолчанию свойство 
    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


    Для отображения свойства MachineName объектов процессов можно 
    использовать командлет Format-Table. 

    Например, следующая команда сохраняет процессы в переменной $p и 
    использует оператор конвейера (|) для передачи сохраненных в ней 
    процессов командлету Format-Table. Параметр Property командлета 
    Format-Table используется для включения свойства MachineName в 
    набор отображаемых данных.


        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

    
    Следующая более сложная команда добавляет свойство MachineName
    в используемый по умолчанию набор отображаемых данных о процессах. 
    Для задания вычисляемых свойств используются хэш-таблицы. 
    К счастью, нет необходимости понимать эту команду, чтобы 
    использовать ее. 

    (Обратите внимание, что обратный апостроф [`] является знаком 
    продолжения строки.)

      
        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   


 ДЕСЕРИАЛИЗОВАННЫЕ ОБЪЕКТЫ
    При выполнении удаленных команд, формирующих выходные данные, эти 
    данные передаются по сети обратно на локальный компьютер. 

    Большинство активных объектов Microsoft .NET Framework (таких как 
    объекты, возвращаемые командлетами Windows PowerShell) невозможно 
    передать по сети, поэтому активные объекты "сериализуются". 
    Другими словами, активные объекты преобразуются в XML-представлени
    я объектов и их свойств. После этого сериализованный объект на 
    основе XML передается по сети. 

    Оболочка Windows PowerShell на локальном компьютере принимает 
    сериализованный объект на основе XML и "десериализует" его путем 
    преобразования в стандартный объект .NET Framework.

    Однако десериализованный объект не является активным объектом. 
    Он представляет собой снимок объекта, созданный во время 
    сериализации, и включает свойства, но не методы. В Windows 
    PowerShell можно использовать эти объекты и управлять ими; 
    например, можно передавать эти объекты по конвейеру, отображать 
    выбранные свойства и форматировать их.

    Большинство десериализованных объектов автоматически 
    форматируется для отображения в виде записей в файле Types.ps1xml 
    или Format.ps1xml. Однако на локальном компьютере могут 
    отсутствовать файлы форматирования для всех десериализованных 
    объектов, которые были созданы на удаленном компьютере. Если 
    объекты не являются форматированными, все свойства каждого 
    объекта отображаются в консоли в потоковом списке. 

    Если объекты не форматируются автоматически, можно использовать 
    форматирующие командлеты, такие как Format-Table или Format-List, 
    для форматирования и отображения выбранных свойств. Или можно 
    использовать командлет Out-GridView для отображения объектов 
    в таблице.

    Кроме того, при выполнении команды на удаленном компьютере, 
    который использует командлеты, отсутствующие на локальном 
    компьютере, возвращаемые командой объекты могут быть 
    отформатированы неправильно из-за отсутствия файлов 
    форматирования для этих объектов на локальном компьютере. 
    Для получения данных форматирования с другого компьютера 
    используйте командлеты Get-FormatData и Export-FormatData. 

    Некоторые объекты, такие как DirectoryInfo и GUID, при получении 
    преобразуются обратно в активные объекты. Для этих объектов не 
    требуется какая-либо специальная обработка или форматирование.  



 УПОРЯДОЧЕНИЕ РЕЗУЛЬТАТОВ
    Порядок имен компьютеров в параметре ComputerName командлетов 
    определяет порядок подключения Windows PowerShell к удаленным 
    компьютерам. Однако результаты отображаются в порядке их 
    получения локальным компьютером, который может отличаться от 
    исходного порядка.

    Для изменения порядка результатов используйте командлет 
    Sort-Object. Можно выполнять сортировку по свойству 
    PSComputerName или MachineName. Кроме того, можно выполнять 
    сортировку по другому свойству объекта, чтобы результаты 
    с разных компьютеров перемежались.



СМ. ТАКЖЕ
    about_Remote
    Format-Table
    Get-EventLog
    Get-Process
    Get-Service
    Get-WmiObject
    Invoke-Command
    Out-GridView
    Select-Object




Содержание