PowerShell Remoting の設定手順
PowerShell Remoting を使うには、接続先(リモートマシン) と 接続元(ローカルマシン) の両方で設定が必要です。環境によって手順が異なるため、ドメイン環境とワークグループ環境(非ドメイン)に分けて解説します。
【リモートマシン側の設定】
ステップ 1:PSRemoting を有効化する
管理者権限で PowerShell を開き、以下を実行します。これ1つで WinRM サービスの起動・自動起動設定・リスナー作成・ファイアウォール例外の追加がまとめて行われます。
# 管理者権限の PowerShell で実行
Enable-PSRemoting -Force
-Force を付けることで確認プロンプトをスキップできます。Windows Server 2012 以降はデフォルトで有効になっていますが、Windows 10/11 などのクライアント OS では手動で実行が必要です。
ステップ 2:ネットワークプロファイルの確認
ネットワークプロファイルが「パブリック」になっていると、WinRM のファイアウォール例外が適用されずエラーになります。「プライベート」または「ドメイン」になっているか確認しましょう。
# 現在のネットワークプロファイルを確認
Get-NetConnectionProfile
# パブリックになっている場合はプライベートに変更
Set-NetConnectionProfile -Name "ネットワーク名" -NetworkCategory Private
パブリックネットワークのままで有効化したい場合は、-SkipNetworkProfileCheck パラメータを使用します。ただし、この場合は同一サブネット内のマシンからのみ接続可能になります。
Enable-PSRemoting -SkipNetworkProfileCheck -Force
ステップ 3:ファイアウォールの確認
Enable-PSRemoting 実行時に自動で設定されますが、念のため確認しておきましょう。WinRM は HTTP で TCP ポート 5985、HTTPS で TCP ポート 5986 を使用します。
# WinRM 関連のファイアウォールルールを確認
Get-NetFirewallRule -Name 'WINRM*' | Select-Object Name, Enabled
# 手動で有効化する場合
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -Enabled True
【ローカルマシン側の設定】
ドメイン環境の場合
Active Directory ドメインに参加しているマシン同士は、Kerberos 認証によって互いに信頼関係が確立されています。そのため、ローカルマシン側での追加設定は基本的に不要です。接続先がドメインメンバーであれば、そのままリモートコマンドを実行できます。
# ドメイン環境ではそのまま接続できる
Invoke-Command -ComputerName "RemoteServer" -ScriptBlock { hostname }
ワークグループ環境(非ドメイン)の場合
ドメインに参加していないマシン同士では Kerberos 認証が使えないため、接続元のローカルマシンで TrustedHosts(信頼済みホスト) に接続先を登録する必要があります。
# 特定のマシンを TrustedHosts に追加
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "RemotePCName または IPアドレス" -Force
# 全マシンを許可する場合(セキュリティに注意)
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
# 現在の TrustedHosts を確認
Get-Item WSMan:\localhost\Client\TrustedHosts
ワークグループ環境では、ローカルマシン側でも WinRM が有効になっている必要があります。有効でない場合は、ローカルマシンでも winrm quickconfig を実行してください。
# ローカルマシン側でも WinRM を有効化
winrm quickconfig
接続テスト
設定が完了したら、以下のコマンドで疎通確認を行いましょう。
# WinRM が応答しているか確認
Test-WSMan -ComputerName "RemoteServer"
# ポート 5985 に到達できるか確認
Test-NetConnection -ComputerName "RemoteServer" -Port 5985
# 実際にリモートセッションを張って確認
Enter-PSSession -ComputerName "RemoteServer" -Credential (Get-Credential)
設定まとめ
| 設定項目 | 対象マシン | ドメイン | ワークグループ |
|---|---|---|---|
| Enable-PSRemoting の実行 | リモート | ✅ 必要 | ✅ 必要 |
| ネットワークプロファイルをPrivateに | リモート | ✅ 必要 | ✅ 必要 |
| ファイアウォール(TCP 5985)を開放 | リモート | ✅ 必要 | ✅ 必要 |
| TrustedHosts への登録 | ローカル | ❌ 不要 | ✅ 必要 |
| ローカル側の WinRM 有効化 | ローカル | ❌ 不要 | ✅ 必要 |