PowerShell HelpFile - about_remote_output
 記事記号:[me1571] 初版:2011/May/10

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

トピック
    about_Remote_Output

簡易説明
    リモート コマンドの出力を解釈および書式設定する方法について説明します。

詳細説明
    リモート コンピューター上で実行されたコマンドの出力はローカル コンピューター
    で実行された同じコマンドの出力と同じように見えますが、いくつかの大きな違いが
    あります。

    このトピックでは、リモート コンピューター上で実行されたコマンドの出力を解釈、
    書式設定、および表示する方法について説明します。

                    
 コンピューター名の表示

    Invoke-Command コマンドレットを使用してリモート コンピューター上でコマンドを
    実行すると、データを生成したコンピューターの名前を含むオブジェクトが返されま
    す。このリモート コンピューター名は、PSComputerName プロパティに格納されます。

    多くのコマンドでは、PSComputerName が既定で表示されます。たとえば、次のコマン
    ドは、Server01 と Server02 の 2 台のリモート コンピューター上で Get-Culture 
    コマンドを実行します。次に示す出力には、コマンドが実行されたリモート コンピュ
    ーターの名前が含まれています。

        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

    
    Invoke-Command の HideComputerName パラメーターを使用すると、PSComputerName 
    プロパティを非表示にすることができます。このパラメーターは、1 台のリモート 
    コンピューターからのみデータを収集するコマンド向けに設計されています。

    次のコマンドは、Get-Culture コマンドを Server01 リモート コンピューター上で
    実行します。ここでは、HideComputerName パラメーターを使用して、PSComputerNam
    e プロパティおよび関連プロパティを非表示にしています。



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

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



     PSComputerName プロパティは、既定で表示されない場合でも、表示することができ
     ます。

     たとえば、次のコマンドは、Format-Table コマンドレットを使用して、リモート G
     et-Date コマンドの出力に PSComputerName プロパティを追加します。

        C:\PS> $dates = invoke-command -script {get-date} -computername Server01, 
        Server02
        C:\PS> $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      



 MachineName プロパティの表示

    Get-Process、Get-Service、Get-EventLog などのいくつかのコマンドレットには、
    リモート コンピューター上のオブジェクトを取得する ComputerName パラメーター
    が用意されています。これらのコマンドレットは Windows PowerShell のリモート処
    理を使用しないので、Windows PowerShell でリモート処理用に構成されていないコ
    ンピューター上でもこれらのコマンドレットを使用できます。

    これらのコマンドレットによって返されるオブジェクトでは、リモート コンピュー
    ターの名前が MachineName プロパティに格納されます (これらのオブジェクトには 
    PSComputerName プロパティがありません)。

    たとえば、次のコマンドは、Server01 および Server02 のリモート コンピューター
    上で PowerShell プロセスを取得します。既定の表示には、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

    Format-Table コマンドレットを使用して、プロセス オブジェクトの MachineName 
    プロパティを表示できます。

    たとえば、次のコマンドは、プロセスを $p 変数に格納した後、パイプライン演算子 
    (|) を使用して $p 内のプロセスを Format-Table コマンドに渡します。次のコマン
    ドは、Format-Table の Property パラメーターを使用して、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.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  Server02     
            192      6 24132  32028   140        3020 powershell  Server01   
            438     26 48436  59132   565        4796 powershell  Server02   

 逆シリアル化されたオブジェクト
    出力を生成するリモート コマンドを実行すると、コマンド出力はネットワークを介
    してローカル コンピューターに返されます。

    このとき、ほとんどのライブ Microsoft .NET Framework オブジェクト (Windows P
    owerShell コマンドレットから返されるオブジェクトなど) はネットワーク上で転送
    できないので、"シリアル化" されます。言い換えると、ライブ オブジェクトは、オ
    ブジェクトおよびそのプロパティの XML 表記に変換されます。次に、この XML ベー
    スでシリアル化されたオブジェクトがネットワーク上で転送されます。

    ローカル コンピューター上で、Windows PowerShell は XML ベースでシリアル化さ
    れたオブジェクトを受け取り、これを "逆シリアル化" します。つまり、XML ベース
    のオブジェクトを標準 .NET Framework オブジェクトに変換します。

    ただし、逆シリアル化されたオブジェクトはライブ オブジェクトではありません。
    これは、オブジェクトがシリアル化された時点のスナップショットです。このオブジ
    ェクトには、プロパティが含まれますが、メソッドは含まれません。Windows PowerS
    hell では、パイプライン処理、選択したプロパティの表示、書式設定を含め、これら
    のオブジェクトを使用および管理できます。

    ほとんどの場合、逆シリアル化されたオブジェクトは、Types.ps1xml または Format
    .ps1xml ファイルのエントリによって、自動的に表示用に書式設定されます。ただし、
    ローカル コンピューター上には、リモート コンピューター上で生成された後に逆シ
    リアル化されたオブジェクトのすべてに対応する書式設定ファイルがない場合もあり
    ます。オブジェクトが書式設定されない場合、それぞれのオブジェクトのすべてのプ
    ロパティがストリーミング リスト形式でコンソールに表示されます。

    オブジェクトが自動的に書式設定されない場合は、書式設定コマンドレット (Format
    -Table または Format-List) を使用することで、選択したプロパティを書式設定お
    よび表示できます。また、Out-GridView コマンドレットを使用して、オブジェクト
    を表形式で表示することもできます。

    さらに、ローカル コンピューター上にないコマンドレットを使用するコマンドをリ
    モート コンピューター上で実行した場合、ローカル コンピューター上にこれらのオ
    ブジェクトのための書式設定ファイルが存在しないので、コマンドから返されるオブ
    ジェクトが適切に書式設定されない場合があります。他のコンピューターから書式設
    定データを取得するには、Get-FormatData コマンドレットと Export-FormatData コ
    マンドレットを使用します。

    一部の種類のオブジェクト (DirectoryInfo オブジェクト、GUID など) は、受信時
    に元のライブ オブジェクトに変換されます。これらのオブジェクトに対しては、特
    別な処理や書式設定は必要ありません。



 結果の並べ替え
    Windows PowerShell がリモート コンピューターに接続する順序は、コマンドレット
    の ComputerName パラメーターに含まれるコンピューター名の順序によって決まりま
    す。ただし、結果は、ローカル コンピューターが結果を受け取った順に表示される
    ので、順序が変わることがあります。

    結果の順序を変更するには、Sort-Object コマンドレットを使用します。PSComputer
    Name プロパティまたは MachineName プロパティに基づいて並べ替えを行うことがで
    きます。また、オブジェクトの他のプロパティに基づいて並べ替えを行うこともでき
    ます。その場合、結果はコンピューターごとの表示にはなりません。



関連項目
    about_Remote
    Format-Table
    Get-EventLog
    Get-Process
    Get-Service
    Get-WmiObject
    Invoke-Command
    Out-GridView
    Select-Object
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_remote_output
ご利用数: 1859005
感想・要望・問い合わせは こちら