リモート コマンドの実行Running Remote Commands

1 つの Windows PowerShell コマンドを使用し、1 台から数百台のコンピューターでコマンドを実行できます。You can run commands on one or hundreds of computers with a single Windows PowerShell command. Windows PowerShell は、WMI、RPC、WS-Management など、さまざまなテクノロジを使用してリモート コンピューティングをサポートします。Windows PowerShell supports remote computing by using various technologies, including WMI, RPC, and WS-Management.

設定をしないリモート処理Remoting Without Configuration

多くの Windows PowerShell コマンドレットは、1 台以上のリモート コンピューターのデータの収集や設定の変更が可能な ComputerName パラメーターを持っています。Many Windows PowerShell cmdlets have the ComputerName parameter that enables you to collect data and change settings on one or more remote computers. Windows PowerShell がサポートするすべての Windows オペレーティング システムのさまざまな通信テクノロジや多くの作業を、特別な構成なしで利用します。They use a variety of communication technologies and many work on all Windows operating systems that Windows PowerShell supports without any special configuration.

これらのコマンドレットには、次のものがあります。These cmdlets include:

通常、特別な構成なしでリモート処理をサポートするコマンドレットは、ComputerName パラメーターを指定し、Session パラメーター必要はありません。Typically, cmdlets that support remoting without special configuration have the ComputerName parameter and do not have the Session parameter. セッションでこれらのコマンドレットを見つけるには、次のように入力します。To find these cmdlets in your session, type:

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

Windows PowerShell のリモート処理Windows PowerShell Remoting

Windows PowerShell のリモート処理では、WS-Management プロトコルを使用し、1 台以上のリモート コンピューターで Windows PowerShell コマンドを実行できます。Windows PowerShell remoting, which uses the WS-Management protocol, lets you run any Windows PowerShell command on one or many remote computers. これにより、永続的な接続の確立、1:1 対話型のセッションの開始、および複数のコンピューターでのスクリプトの実行が可能になります。It lets you establish persistent connections, start 1:1 interactive sessions, and run scripts on multiple computers.

Windows PowerShell のリモート処理を使用するには、リモート管理のためにリモート コンピューターを構成する必要があります。To use Windows PowerShell remoting, the remote computer must be configured for remote management. 手順を含む詳細については、「about_Remote_Requirements」をご覧ください。For more information, including instructions, see About Remote Requirements.

Windows PowerShell のリモート処理を構成した後は、多くのリモート処理の戦略が使用可能になります。After you have configured Windows PowerShell remoting, many remoting strategies are available to you. このドキュメントの残りの部分では、その一部だけを取り上げます。The remainder of this document lists just a few of them. 詳細については、リモート コマンドに関するページリモート コマンドの FAQ に関するページをご覧ください。For more information, see About Remote and About Remote FAQ.

対話型セッションの開始Start an Interactive Session

1 台のリモート コンピューターとの対話型セッションを開始するには、Enter-PSSession コマンドレットを使用します。To start an interactive session with a single remote computer, use the Enter-PSSession cmdlet. たとえば、Server01 リモート コンピューターと対話型セッションを開始するには、次のように入力します。For example, to start an interactive session with the Server01 remote computer, type:

Enter-PSSession Server01

コマンド プロンプトが、接続しているコンピューターの名前を表示するよう変更されます。The command prompt changes to display the name of the computer to which you are connected. これ以降、プロンプトで入力したコマンドはリモート コンピューターで実行され、結果はローカル コンピューターに表示されます。From then on, any commands that you type at the prompt run on the remote computer and the results are displayed on the local computer.

対話型セッションを終了するには、次のように入力します。To end the interactive session, type:

Exit-PSSession

Enter-PSSession コマンドレットと Exit-PSSession コマンドレットの詳細については、「Enter-PSSession」と「Exit-PSSession」を参照してください。For more information about the Enter-PSSession and Exit-PSSession cmdlets, see Enter-PSSession and Exit-PSSession.

リモート コマンドの実行Run a Remote Command

1 台以上のリモート コンピューターでいずれかのコマンドを実行するには、Invoke-Command コマンドレットを使用します。To run any command on one or many remote computers, use the Invoke-Command cmdlet. たとえば、Get-UICulture コマンドをリモート コンピューター Server01 と Server02 で実行するには、次のように入力します。For example, to run a Get-UICulture command on the Server01 and Server02 remote computers, type:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}

コンピューターに出力が返されます。The output is returned to your computer.

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」を参照してください。For more information about the Invoke-Command cmdlet, see Invoke-Command.

スクリプトの実行Run a Script

1 台以上のリモート コンピューターでスクリプトを実行するには、Invoke-Command コマンドレットの FilePath パラメーターを使用します。To run a script on one or many remote computers, use the FilePath parameter of the Invoke-Command cmdlet. スクリプトがローカル コンピューターでアクセス可能でなければなりません。The script must be on or accessible to your local computer. 結果はローカル コンピューターに返されます。The results are returned to your local computer.

たとえば、次のコマンドは、リモート コンピューター Server01 と Server02 で DiskCollect.ps1 スクリプトを実行します。For example, the following command runs the DiskCollect.ps1 script on the Server01 and Server02 remote computers.

Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1

Invoke-Command コマンドレットの詳細については、「Invoke-Command」を参照してください。For more information about the Invoke-Command cmdlet, see Invoke-Command.

永続的な接続の確立Establish a Persistent Connection

データを共有する一連の関連コマンドを実行するには、リモート コンピューターでセッションを作成し、Invoke-Command コマンドレットを使用して作成したセッションでコマンドを実行します。To run a series of related commands that share data, create a session on the remote computer and then use the Invoke-Command cmdlet to run commands in the session that you create. リモート セッションを作成するには、New-PSSession コマンドレットを使用します。To create a remote session, use the New-PSSession cmdlet.

たとえば、次のコマンドは、コンピューター Server01 でリモート セッションを作成し、コンピューター Server02 で別のリモート セッションを作成します。For example, the following command creates a remote session on the Server01 computer and another remote session on the Server02 computer. セッション オブジェクトは $s 変数に保存されます。It saves the session objects in the $s variable.

$s = New-PSSession -ComputerName Server01, Server02

セッションが確立されたので、それらで任意のコマンドを実行できます。Now that the sessions are established, you can run any command in them. また、セッションは永続的であるため、1 つのコマンドでデータを収集し、後続のコマンドで利用することができます。And because the sessions are persistent, you can collect data in one command and use it in a subsequent command.

たとえば、次のコマンドは $s 変数のセッションで Get-HotFix コマンドを実行し、結果を $h 変数に保存します。For example, the following command runs a Get-HotFix command in the sessions in the $s variable and it saves the results in the $h variable. $h 変数は $s のそれぞれのセッションで作成されますが、ローカル セッションには存在しません。The $h variable is created in each of the sessions in $s, but it does not exist in the local session.

Invoke-Command -Session $s {$h = Get-HotFix}

これで、次のように、後続のコマンドで $h 変数のデータを使用できます。Now you can use the data in the $h variable in subsequent commands, such as the following one. 結果はローカル コンピューターに表示されます。The results are displayed on the local computer.

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NTAUTHORITY\SYSTEM"}}

高度なリモート処理Advanced Remoting

Windows PowerShell のリモート管理はこれだけではありません。Windows PowerShell remote management just begins here. Windows PowerShell と共にインストールされるコマンドレットを使用して、ローカルとリモートの両側からのリモート セッションの確立と構成、カスタマイズおよび制限されたセッションの作成、リモート セッションで実際に暗黙的に実行されるコマンドのリモート セッションからのユーザーによるインポート、リモート セッションのセキュリティの構成など、さまざまな処理を実行できます。By using the cmdlets installed with Windows PowerShell, you can establish and configure remote sessions both from the local and remote ends, create customized and restricted sessions, allow users to import commands from a remote session that actually run implicitly on the remote session, configure the security of a remote session, and much more.

リモートの構成を容易にするために、Windows PowerShell には WSMan プロバイダーが含まれます。To facilitate remote configuration, Windows PowerShell includes a WSMan provider. プロバイダーが作成する WSMAN: ドライブでは、ローカル コンピューターとリモート コンピューターの構成設定の階層内を移動できます。The WSMAN: drive that the provider creates lets you navigate through a hierarchy of configuration settings on the local computer and remote computers. WSMan プロバイダーの詳細については、「WSMan Provider (WSMan プロバイダー)」および WS-Management コマンドレットに関するページを参照するか、Windows PowerShell コンソールで「get-help wsman」と入力してください。For more information about the WSMan provider, see WSMan Provider and About WS-Management Cmdlets, or in the Windows PowerShell console, type "Get-Help wsman".

詳細については、次のドキュメントをご覧ください。For more information, see:

リモート処理のエラーに関するヘルプは、「about_Remote_Troubleshooting」をご覧ください。For help with remoting errors, see about_Remote_Troubleshooting.

参照See Also