about_Remote に関するページ
簡単な説明
PowerShell でリモート コマンドを実行する方法について説明します。
長い説明
一時的または永続的な接続を使用して、1 台または複数のリモート コンピューターでリモート コマンドを実行できます。 1 台のリモート コンピューターで対話型セッションを開始することもできます。
注意
PowerShell リモート処理を使用するには、リモート処理用にローカル コンピューターとリモート コンピューターを構成する必要があります。 詳細については、「about_Remote_Requirements」を参照してください。
対話型セッションを開始する方法
リモート コマンドを実行する最も簡単な方法は、リモート コンピューターとの対話型セッションを開始することです。
セッションが開始されると、リモート コンピューターで直接入力したかのように、入力したコマンドがリモート コンピューターで実行されます。 対話型セッションごとに 1 台のコンピューターにのみ接続できます。
対話型セッションを開始するには、 コマンドレットを使用します Enter-PSSession
。 次のコマンドは、Server01 コンピューターとの対話型セッションを開始します。
Enter-PSSession Server01
PowerShell は、リモート コンピューターの名前を含むようにコマンド プロンプトを変更します。
Server01\PS>
これで、Server01 コンピューターでコマンドを入力できるようになりました。
対話型セッションを終了するには、次のように入力します。
Exit-PSSession
詳細については、「 Enter-PSSession」を参照してください。
リモート コマンドを実行する方法
リモート コンピューターで他のコマンドを実行するには、 コマンドレットを Invoke-Command
使用します。
1 つのコマンドまたは関連のないコマンドを実行するには、 の Invoke-Command
ComputerName パラメーターを使用してリモート コンピューターを指定します。 コマンドを指定するには、 ScriptBlock パラメーターを使用します。
たとえば、次のコマンドは Server01 コンピューターでコマンドを実行 Get-Culture
します。
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
永続的な接続を作成する方法
コマンドレットの ComputerName パラメーターを Invoke-Command
使用すると、PowerShell によってリモート コンピューターへの一時的な接続が確立されます。 コマンドが完了すると、接続が閉じます。 この一時セッションで定義されている変数または関数はすべて失われます。
リモート コンピューターへの永続的な接続を作成するには、 コマンドレットを使用します New-PSSession
。 たとえば、次のコマンドは、Server01 および Server02 コンピューターに PSSessions を作成し、PSSessions を変数に $s
保存します。
$s = New-PSSession -ComputerName Server01, Server02
PSSession でコマンドを実行する方法
PSSession を使用すると、関数、エイリアス、変数の値など、データを共有する一連のリモート コマンドを実行できます。 PSSession でコマンドを実行するには、 コマンドレットの Session パラメーターを Invoke-Command
使用します。
たとえば、次のコマンドでは、 コマンドレットをInvoke-Command
Get-Process
使用して、Server01 および Server02 コンピューター上の PSSessions でコマンドを実行します。
このコマンドは、各 PSSession の $p
変数にプロセスを保存します。
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
PSSession は永続的な接続を使用するため、 変数を使用するのと同じ PSSession で別のコマンドを $p
実行できます。 次のコマンドは、 に保存されたプロセスの数を $p
カウントします。
Invoke-Command -Session $s -ScriptBlock {$p.count}
複数のコンピューターでリモート コマンドを実行する方法
複数のコンピューターでリモート コマンドを実行するには、 の ComputerName パラメーター Invoke-Command
の値にすべてのコンピューター名を入力します。 名前はコンマで区切ります。
たとえば、次のコマンドは、3 台の Get-Culture
コンピューターでコマンドを実行します。
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}
複数の PSSession でコマンドを実行することもできます。 次のコマンドは、Server01、Server02、Server03 コンピューターに PSSessions を作成し、各 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}
リモート コンピューターでスクリプトを実行する方法
リモート コンピューターでローカル スクリプトを実行するには、 の FilePath パラメーターを使用します Invoke-Command
。 ファイルをコピーする必要はありません。 たとえば、次のコマンドは、S1 および S2 コンピューターでスクリプトを実行 Sample.ps1
します。
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
PowerShell は、スクリプトの結果をローカル コンピューターに返します。
リモート コマンドを停止する方法
コマンドを中断するには、Ctrl c キーを押します+。 PowerShell は割り込み要求をリモート コンピューターに渡し、そこでリモート コマンドを終了します。
詳細情報
リモート処理のシステム要件については、「 about_Remote_Requirements」を参照してください。
リモート出力の書式設定のヘルプについては、「 about_Remote_Output」を参照してください。
リモート処理のしくみ、リモート データの管理方法、特別な構成、セキュリティの問題、その他のよく寄せられる質問については、「 PowerShell リモート処理に関する FAQ」を参照してください。
リモート処理エラーの解決については、「 about_Remote_Troubleshooting」を参照してください。
PSSession と永続的な接続の詳細については、「 about_PSSessions」を参照してください。
PowerShell バックグラウンド ジョブの詳細については、「 about_Jobs」を参照してください。