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