Windows PowerShell コマンドは、コンピューターが 1 台でも数百台でも、1 回指定するだけで実行できます。Windows PowerShell は、WMI、RPC、WS-Management などの各種テクノロジーを使用したリモート コンピューティングをサポートしています。

構成不要のリモート処理

Windows PowerShell コマンドレットの多くは、ComputerName パラメーターを持ちます。ComputerName パラメーターを使用して、1 つまたは複数のリモート コンピューターのデータを収集したり、設定値を変更したりできます。コマンドレットではさまざまな通信テクノロジーが使用されており、その多くは特別な構成を行うことなく、Windows PowerShell がサポートするすべての Windows オペレーティング システムで使用できます。

コマンドレットの具体例には、次のものがあります。

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

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

Windows PowerShell のリモート処理

Windows PowerShell のリモート処理には WS-Management プロトコルが採用されており、1 つまたは多数のリモート コンピューター上で任意の Windows PowerShell コマンドを実行できます。固定接続を確立することも、1:1 の対話型セッションを開始することも、複数のコンピューター上でスクリプトを実行することもできます。

Windows PowerShell リモート処理を使用するには、リモート コンピューターをリモート管理用に構成する必要があります。手順などの詳細については、「about_Remote_Requirements」を参照してください。

Windows PowerShell リモート処理の構成が完了すると、さまざまな手法のリモート処理を利用できるようになります。このドキュメントでは以降、それらのリモート処理のごく一部を紹介します。詳細については、「about_Remote」および「about_Remote_FAQ」を参照してください。

対話型セッションの開始

1 台のリモート コンピューターとの対話型セッションを開始するには、Enter-PSSession コマンドレットを使用します。たとえば、Server01 リモート コンピューターとの対話型セッションを開始するには、次のように入力します。

enter-pssession Server01

コマンド プロンプトが変更され、接続先コンピューターの名前が表示されます。それ以降、プロンプトで入力されたあらゆるコマンドはリモート コンピューター上で実行されるようになり、その結果はローカル コンピューター上に表示されます。

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

exit-pssession

Enter-PSSession コマンドレットおよび Exit-PSSession コマンドレットの詳細については、「Enter-PSSession」および「Exit-PSSession」を参照してください。

リモート コマンドの実行

任意のコマンドを 1 つまたは多数のリモート コンピューター上で実行するには、Invoke-Command コマンドレットを使用します。たとえば、Server01 と Server02 の各リモート コンピューター上で Get-UICulture コマンドを実行するには、次のように入力します。

invoke-command -computername Server01, Server02 {get-UICulture}

その出力はコンピューターに返されます。

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

Invoke-Command コマンドレットの詳細については、Invoke-Command」を参照してください。

スクリプトの実行

1 つまたは多数のリモート コンピューター上でスクリプトを実行するには、Invoke-Command コマンドレットの FilePath パラメーターを使用します。そのスクリプトはローカル コンピューター上に置かれているか、ローカル コンピューターからアクセス可能である必要があります。結果はローカル コンピューターに返されます。

たとえば、Server01 と Server02 の各リモート コンピューター上で DiskCollect.ps1 スクリプトを実行するには、次のコマンドを入力します。

invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

Invoke-Command コマンドレットの詳細については、Invoke-Command」を参照してください。

固定接続の確立

データを共有する一連の関連コマンドを実行するには、リモート コンピューター上でセッションを作成し、Invoke-Command コマンドレットを使用して、作成したセッションでコマンドを実行します。リモート セッションを作成するには、New-PSSession コマンドレットを使用します。

たとえば、Server01 コンピューターにリモート セッションを 1 つ作成し、もう 1 つの別のリモート セッションを Server02 コンピューターに作成するには、次のコマンドを実行します。これにより、セッション オブジェクトが $s 変数に格納されます。

$s = new-pssession -computername Server01, Server02

これで、セッションが確立されたので、そのセッションで任意のコマンドを実行できます。このセッションは永続的であるため、コマンドで収集したデータは、以降のコマンドでも使用できます。

たとえば、セッションの $s 変数で Get-Hotfix コマンドを実行し、その結果を $h 変数に格納するには、次のコマンドを実行します。$h 変数は各セッションで $s 内に作成されますが、ローカル セッションには存在しません。

invoke-command -session $s {$h = get-hotfix}

これで、$h 変数のデータが後続のコマンドで使用可能になりました。たとえば、次のようなコマンドです。結果はローカル コンピューター上に出力されます。

invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"

高度なリモート処理

Windows PowerShell リモート管理では、この他にもさまざまな処理を実行できます。Windows PowerShell に既定で備えられているコマンドレットを使用することにより、ローカル エンドおよびリモート エンドからリモート セッションを確立および構成することや、カスタマイズしたセッションや制限付きセッションを作成する、実際にはリモート セッションに対して暗黙的に実行されるリモート セッションからユーザーがコマンドをインポートできるようにする、リモート セッションのセキュリティを構成するなど、さまざまな処理を実行することができます。

リモート構成を支援するために、Windows PowerShell には WS-Management プロバイダーが備えられています。プロバイダーによって作成される WSMAN: ドライブを使用して、ローカル コンピューターとリモート コンピューター上の構成設定値の階層内を移動できます。WS-Management プロバイダーの詳細については、「WSMan Provider」および「about_WS-Management_Cmdlets」を参照するか、Windows PowerShell コンソールで「get-help wsman」と入力してください。

詳細については、「about_Remote_FAQ」、「New-PSSessionConfiguration」、および「Import-PSSession」を参照してください。リモート処理のエラーに対応するには、「about_Remote_Troubleshooting」を参照してください。

関連項目




目次