1 つの PowerShell コマンドを使用し、1 台から数百台のコンピューターでコマンドを実行できます。 Windows PowerShell では、WMI、RPC、WS-Management など、さまざまなテクノロジを使用したリモート コンピューティングがサポートされています。
PowerShell では、WMI、WS-Management、SSH リモート処理がサポートされています。 PowerShell 7 以降では、RPC は Windows でのみサポートされています。
PowerShell でのリモート処理の詳細については、次の記事を参照してください。
構成なしの Windows PowerShell リモート処理
多くの Windows PowerShell コマンドレットには ComputerName パラメーターがあり、1 台以上のリモート コンピューターでデータを収集し、設定を変更できます。 これらのコマンドレットは、さまざまな通信プロトコルを使用して、特別な構成を行わなくてもすべての Windows オペレーティング システム上で動作します。
これらのコマンドレットには、次のものがあります。
- コンピュータを再起動
- Test-Connection
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-WinEvent
- Get-WmiObject
通常、特別な構成なしでリモート処理をサポートするコマンドレットには ComputerName パラメーターがあり、 Session パラメーターはありません。 セッションでこれらのコマンドレットを見つけるには、次のように入力します。
Get-Command | Where-Object {
$_.Parameters.Keys -contains "ComputerName" -and
$_.Parameters.Keys -notcontains "Session"
}
Windows PowerShell のリモート処理
windows PowerShell リモート処理では、WS-Management プロトコルを使用して、1 つ以上のリモート コンピューターで任意の Windows PowerShell コマンドを実行できます。 永続的な接続の確立、対話型セッションの開始、リモート コンピューターでのスクリプトの実行を行うことができます。
Windows PowerShell リモート処理を使用するには、リモート管理用にリモート コンピューターを構成する必要があります。 手順を含む詳細については、「 リモート要件について」を参照してください。
Windows PowerShell リモート処理を構成したら、多くのリモート処理戦略を利用できます。 この記事では、そのほんの一部を示します。 詳細については、「 リモートについて」を参照してください。
対話型セッションを開始する
1 台のリモート コンピューターで対話型セッションを開始するには、 Enter-PSSession コマンドレットを 使用します。 たとえば、Server01 リモート コンピューターとの対話型セッションを開始するには、次のように入力します。
Enter-PSSession Server01
コマンド プロンプトが変更され、リモート コンピューターの名前が表示されます。 プロンプトで入力したコマンドはリモート コンピューターで実行され、結果はローカル コンピューターに表示されます。
対話型セッションを終了するには、次のように入力します。
Exit-PSSession
Enter-PSSession
およびExit-PSSession
コマンドレットの詳細については、次を参照してください。
- Enter-PSSession
- Exit-PSSession(PSSession 終了)
リモート コマンドを実行する
1 台以上のコンピューターでコマンドを実行するには、 Invoke-Command コマンドレットを使用します。 たとえば、Server01 および Server02 リモート コンピューターで Get-UICulture コマンドを実行するには、次のように入力します。
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {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
スクリプトを実行する
1 つまたは複数のリモート コンピューターでスクリプトを実行するには、 コマンドレットの Invoke-Command
パラメーターを使用します。 スクリプトはローカル コンピューター上にあるか、ローカル コンピューターからアクセスできる必要があります。 結果はローカル コンピューターに返されます。
たとえば、次のコマンドは、リモート コンピューターの Server01 と Server02 で DiskCollect.ps1
スクリプトを実行します。
Invoke-Command -ComputerName Server01, Server02 -FilePath C:\Scripts\DiskCollect.ps1
永続的な接続を確立する
New-PSSession
コマンドレットを使用して、リモート コンピューター上に永続的なセッションを作成します。 次の例では、Server01 と Server02 にリモート セッションを作成します。 セッション オブジェクトは、 $s
変数に格納されます。
$s = New-PSSession -ComputerName Server01, Server02
セッションが確立されたので、それらで任意のコマンドを実行できます。 また、セッションは永続的であるため、1 つのコマンドからデータを収集して、別のコマンドでそのデータを利用できます。
たとえば、次のコマンドは、Get-HotFix
変数内のセッションで$s
コマンドを実行し、結果を $h
変数に保存します。
$h
変数は $s
のセッションごとに作成されますが、ローカル セッションには存在しません。
Invoke-Command -Session $s {$h = Get-HotFix}
これで、 $h
変数内のデータを、同じセッション内の他のコマンドと共に使用できるようになりました。 結果はローカル コンピューターに表示されます。 例えば次が挙げられます。
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}
高度なリモート処理
PowerShell には、次のことが可能なコマンドレットが含まれています。
- ローカル側とリモート側の両方からリモート セッションを構成して作成する
- カスタマイズされた制限付きセッションを作成する
- リモート セッションで実際に暗黙的に実行されるコマンドをリモート セッションからインポートする
- リモート セッションのセキュリティを構成する
Windows 上の PowerShell には、WSMan プロバイダーが含まれています。 プロバイダーは、ローカル コンピューターとリモート コンピューターの構成設定の階層間を移動できる WSMan:
ドライブを作成します。
WSMan プロバイダーの詳細については、「 WSMan プロバイダー 」および「 WS-Management コマンドレットについて」を参照するか、Windows PowerShell コンソールで「 Get-Help WSMan
」と入力します。
詳細については、以下を参照してください。
- PowerShell リモート処理に関する FAQ
- Register-PSSessionConfiguration
- import-PSSession を する
リモート処理エラーのヘルプについては、about_Remote_Troubleshootingを参照してください。
こちらもご覧ください
PowerShell