PowerShell HelpFile - about_remote
 記事記号:[me1568] 初版:2011/May/10

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

トピック
    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 PowerShel
    l を実行しているどのコンピューターでも使用できます。したがって、コンピュータ
    ーを 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

      

    一般的に、特別な構成が不要なリモート処理をサポートするコマンドレットには Com
    puterName パラメーターがあり、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 パラメーターを使用すると、Windo
    ws PowerShell はコマンドを実行するための接続を確立します。コマンドが完了する
    と、接続は閉じます。コマンドで定義されていた変数や関数は、すべて削除されます。

    リモート コンピューターへの固定接続を作成するには、New-PSSession コマンドレ
    ットを使用します。たとえば、次のコマンドを実行すると、Server01 および Server
    02 コンピューター上に 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 の C
    omputerName パラメーターの値にすべてのコンピューター名を入力します。名前はコ
    ンマで区切ります。

    たとえば、次のコマンドは、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-cul
        ture}


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

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

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

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

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

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

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



詳細情報

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

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

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

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

    -- 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
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、HelpFile、about_remote
ご利用数: 1862307
感想・要望・問い合わせは こちら