about_Remote

トピック
    about_Remote

簡易説明
    Windows PowerShell でリモート コマンドを実行する方法について説明します。


詳細説明
    一時接続または固定接続を使用して、1 台のコンピューターまたは複数のコンピューター上でリモート 
    コマンドを実行できます。1 台のリモート コンピューターと対話型のセッションを開始することもできま
    す。
    
    ここでは、さまざまなリモート コマンドの実行方法を示す一連の例を紹介します。これらの基本的なコ
    マンドを試してみた後で、そのコマンド内で使用される各コマンドレットに関するヘルプ トピックをお
    読みください。これらのトピックには、コマンドレットの詳細と、ニーズに合わせてコマンドを変更する
    方法が示されています。

    注: Windows PowerShell リモート処理を使用するには、ローカル コンピューターおよびリモート 
        コンピューターをリモート処理用に構成する必要があります。詳細については、
       「about_Remote_Requirements」を参照してください。
          

 対話型のセッションを開始する方法 (ENTER-PSSESSION)

     リモート コマンドを実行するための最も簡単な方法は、リモート コンピューターとの対話型セッショ
     ンを開始することです。

     セッションが開始されると、リモート コンピューターで直接入力した場合と同様に、入力したコマンド
     がリモート コンピューターで実行されます。各対話型セッションでは、1 台のコンピューターにのみ接
     続できます。

     対話型のセッションを開始するには、Enter-PSSession コマンドレットを使用します。次のコマンド
     を実行すると、Server01 コンピューターとの対話型のセッションが開始されます。

    enter-pssession server01

     コマンド プロンプトが変わり、Server01 コンピューターに接続していることが示されます。

    Server01\PS>

     これで、コマンドを Server01 コンピューター上で入力することができます。

     対話型のセッションを終了するには、次のように入力します。

    exit-pssession


     詳細については、「Enter-PSSession」を参照してください。

      

 ComputerName パラメーターを持つコマンドレットを使用してリモート データを取得する方法

    一部のコマンドレットには、リモート コンピューターからオブジェクトを取得するための 
    ComputerName パラメーターがあります。

    このようなコマンドレットは WS-Management ベースの Windows PowerShell リモート処理を使用しな
    いので、その ComputerName パラメーターは、Windows PowerShell を実行しているどのコンピューター
    でも使用できます。したがって、コンピューターを Windows PowerShell リモート処理用に構成する
    必要はありません。また、コンピューターがリモート処理を行ううえで必要なシステム要件を満たして
    いる必要もありません。

    次のコマンドレットには、ComputerName パラメーターがあります。
 
        Clear-EventLog    Limit-EventLog
        Get-Counter       New-EventLog
        Get-EventLog      Remove-EventLog
        Get-HotFix        Restart-Computer
        Get-Process       Show-EventLog
        Get-Service       Show-Service
        Get-WinEvent      Stop-Computer
        Get-WmiObject     Write-EventLog

  
    たとえば、次のコマンドでは、Server01 リモート コンピューター上のサービスを取得できます。

    get-service -computername server01

      

    一般的に、特別な構成が不要なリモート処理をサポートするコマンドレットには ComputerName 
    パラメーターがあり、Session パラメーターはありません。このようなコマンドレットをセッション
    内で検索するには、次のように入力します。

        get-command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}
 


 リモート コマンドの実行方法

    リモート コンピューターで他のコマンドを実行するには、Invoke-Command コマンドレットを使用し
    ます。

    1 つのコマンドまたはいくつかの無関係のコマンドを実行するには、Invoke-Command の 
    ComputerName パラメーターを使用して、リモート コンピューターを指定します。また、ScriptBlock 
    パラメーターを使用してコマンドを指定します。

    たとえば、次のコマンドは、Get-Culture コマンドを Server01 コンピューター上で実行します。

    invoke-command -computername Server01 -scriptblock {get-culture}

    ComputerName パラメーターは、1 台または多数のコンピューター上で 1 つのコマンドまたはいくつ
    かの無関係のコマンドを実行する場合に使用します。
    リモート コンピューターへの固定接続を確立するには、Session パラメーターを使用します。

 
 固定接続 (PSSession) を作成する方法

    Invoke-Command コマンドレットの ComputerName パラメーターを使用すると、Windows PowerShell は
    コマンドを実行するための接続を確立します。コマンドが完了すると、接続は閉じます。コマンドで定義
    されていた変数や関数は、すべて削除されます。

    リモート コンピューターへの固定接続を作成するには、New-PSSession コマンドレットを使用しま
    す。たとえば、次のコマンドを実行すると、Server01 および Server02 コンピューター上に PSSession 
    が作成され、その PSSession が $s 変数に保存されます。

    $s = new-pssession -computername Server01, Server02


 PSSession でコマンドを実行する方法
  
    PSSession では、関数、エイリアス、変数の値などのデータを共有する一連のリモート コマンドを実行で
    きます。
    PSSession でコマンドを実行するには、Invoke-Command コマンドレットの Session パラメーターを使用
    します。

    たとえば次のコマンドは、Invoke-Command コマンドレットを使用して、Server01 および Server02 コン
    ピューター上の PSSession で Get-Process コマンドを実行します。このコマンドは、各 PSSession で 
    $p 変数にプロセスを保存します。

        invoke-command -session $s -scriptblock {$p = get-process}

    PSSession では固定接続を使用するので、$p 変数を使用する同じ PSSession で別のコマンドを実行でき
    ます。
    次のコマンドは、$p に保存されているプロセスの数をカウントします。

        invoke-command -session $s -scriptblock {$p.count}

 複数のコンピューター上でリモート コマンドを実行する方法

    複数のコンピューター上でリモート コマンドを実行するには、Invoke-Command の ComputerName パ
    ラメーターの値にすべてのコンピューター名を入力します。名前はコンマで区切ります。

    たとえば、次のコマンドは、Get-Culture コマンドを 3 台のコンピューター上で実行します。

    invoke-command -computername S1, S2, S3 -scriptblock {get-culture}

    複数の PSSession で 1 つのコマンドを実行することもできます。次のコマンドを実行すると、
    Server01、Server02、Server03 の各コンピューター上に PSSession が作成され、各 PSSession で 
    Get-Culture コマンドが実行されます。

        $s = new-pssession -computername S1, S2, S3
    invoke-command -session $s -scriptblock {get-culture}


    ローカル コンピューターの一覧を含めるには、ローカル コンピューターの名前、ドット (.)、または
    「localhost」を入力します。

    invoke-command -computername S1, S2, S3, localhost -scriptblock {get-culture}


 リモート コンピューター上でスクリプトを実行する方法

    リモート コンピューター上でローカル スクリプトを実行するには、Invoke-Command の FilePath パラ
    メーターを使用します。

    たとえば、次のコマンドは、S1 および S2 コンピューター上で Sample.ps1 スクリプトを実行します。

        invoke-command -computername S1, S2 -filepath C:\Test\Sample.ps1

    スクリプトの結果は、ローカル コンピューターに返されます。ファイルをコピーする必要はありませ
    ん。
  

 リモート コマンドを停止する方法

   コマンドを停止するには、Ctrl キーを押しながら C キーを押します。停止要求がリモート コンピュータ
   ーに渡され、リモート コマンドが停止されます。



詳細情報

    -- リモート処理を行ううえで必要なシステム要件については、「about_Remote_Requirements」を
       参照してください。

    -- リモート出力のフォーマットのヘルプについては、「about_Remote_Output」を参照してくださ
       い。

    -- リモート処理のしくみ、リモート データの管理方法、特別な構成、セキュリティ上の問題、その他
       のよく寄せられる質問については、「about_Remote_FAQ」を参照してください。

    -- リモート処理エラーの解決に役立つヘルプについては、「about_Remote_Troubleshooting」を
       参照してください。

    -- PSSession と固定接続については、「about_PSSessions」を参照してください。

    -- Windows PowerShell のバックグラウンド ジョブについては、「about_Jobs」を参照してくだ
       さい。

キーワード
    about_Remoting

関連項目
    about_PSSessions
    about_Remote_Requirements
    about_Remote_FAQ
    about_Remote_TroubleShooting
    Enter-PSSession 
    Invoke-Command
    New-PSSession