Windowsでは、PSRemotingはデフォルトで有効になっている場合もありますが、常に有効になっているわけではありません。PSRemotingが有効かどうかをテストしたり、WindowsでPSRemotingを有効にする必要がある場合は、このチュートリアルをご覧ください。
このチュートリアルでは、Windowsを実行しているローカルおよびリモートコンピュータでPSRemotingを有効にするさまざまな方法を説明します。
さあ、始めましょう!
PSRemotingの有効化には多くの作業が必要です。
PowerShell Remotingについて初めて学ぶ場合、有効化は単一のコマンドだけで行われると思うかもしれません。おそらく、Enable-PSRemoting
のPowerShellコマンドレットに関する参照を見たことがあり、それを実行するとどこかにビットが切り替わると思っているかもしれません。しかし、それは間違いです。
PSRemotingの有効化には、背後で多くのタスクが実行される必要があります。PowerShell Remotingは他のシステムに依存して正常に実行されるため、いくつかの依存関係があります。
たとえば、Windowsでは、パラメータを指定せずにEnable-PSRemoting
コマンドレットを実行すると、次のすべてのタスクが実行されます:
- WinRMサービスが開始され、自動起動に設定されます。
- デフォルトのWinRMポート5985でのHTTPトラフィック用のリスナーが作成されます。
- WS-Managementのファイアウォール例外が有効になります。
- PowerShellセッション構成がWS-Managementに登録されます。
- PowerShellセッション構成が有効になります。
- PowerShellリモートセッションを設定してリモートアクセスを許可します。
- すべての変更を適用するためにWinRMサーバーを再起動します。
手動でこれをすべて行う必要がなくて良かったですね。なぜEnable-PSRemoting
コマンドレットですべてができると言及するのですか?なぜなら、何かがうまくいかない場合に、何が起こったかをトラブルシューティングする必要があるからです。
WindowsのデフォルトのPSRemoting設定
PSRemotingはWindowsで生まれたものなので、デフォルトでは有効になっていますが、普遍的に有効ではなく、またすべてのWindows OSバージョンで有効ではありません。
すべてのWindowsクライアントオペレーティングシステムでは、PSRemotingは常に無効になっています。
Windows Serverでは、PSRemotingは時々有効になっていますが、Windowsが実行されているネットワークプロファイルによって異なります。Windows OSのPSRemotingが有効かどうかを確認するのに役立つ便利な表が以下にあります。
Operating System | Network Profile | PSRemoting |
Windows Server 2008 R2 | Domain/Private | Disabled |
Windows Server 2008 R2 | Public | Disabled |
Windows Server 2012 & Newer | Domain/Private | Enabled |
Windows Server 2012 & Newer | Public | Enabled within the same subnet |
一方、Linuxは簡単です。PSRemotingは存在しません!さらに、デフォルトではPowerShellすらインストールされていません。LinuxでPSRemotingを実行するには、設定する必要があります。
話はここまでです、実際にPSRemotingの使用方法を見ていきましょう!
前提条件
このセクションの例に従って進める場合は、以下のものを準備してください:
- A Windows Server 2008 R2 or later machine
- A local or Active Directory domain user in the local administrators group
ローカルでPSRemotingを有効にする
PSRemotingを有効にする最も簡単な方法の1つは、組み込みのEnable-PSRemoting
コマンドを使用することです。このコマンドは、多くの異なるサービスを構成してPowerShell Remotingをサポートするためのショートカットです。
Enable-PSRemoting
コマンドレットの使用方法
このコマンドをパラメータなしで実行すると、実行しているOSに応じて異なるアクションが実行されます。現在のWindows OSでは、同じ基本的な手順が実行されます。PSRemotingが有効になり、WinRM HTTPリスナーが作成され、ファイアウォールのルールが有効になります。重要な違いは、Publicネットワークの扱い方です。
Windows Server 2019などのサーバーOSでは、Publicネットワークのファイアウォールルールにより、同じネットワーク上の他のデバイスからのリモート接続が許可されます。Windows 10などのクライアントOSでは、パブリックネットワークであるというエラーメッセージが表示されます。
Windowsがどのネットワークプロファイルで実行されているかわからない場合は、次のコマンドを実行します:
信頼できるネットワーク上でのみPSRemotingを使用してください。なぜなら、それはリモート接続を待ち受けるために実質的にウェブサーバーを実行しているからです。

プライベートまたはドメイン以外のネットワークプロファイルでPSRemotingを実行しても問題がない場合は、SkipNetworkProfileCheck
パラメータを使用してネットワークプロファイルのチェックをスキップすることができます。このパラメータを使用すると、Windowsファイアウォール上でWinRMポートが開かれます。
SkipNetworkProfileCheck
パラメータを使用すると、現在のネットワークプロファイルでのPowerShellリモーティングに対してWindowsファイアウォールが開かれますが、同じサブネット上のマシンからのリモート接続のみが許可されます。
Enable-PSRemoting
と一緒に使用できる2つのパラメータは、-Force
と-Confirm
です。 -Force
を使用すると、Enable-PSRemoting
コマンドを実行する際に通常表示されるすべてのプロンプトをスキップすることができます。同じ結果を得るために-Confirm:$false
を使用することもできます。
winrm quickconfig
コマンドの使用
winrm quickconfig
コマンドは、Enable-PSRemoting
コマンドレットが作成される前に一般的なPSRemotingの設定方法でしたが、それでも使用されています。単にwinrm quickconfig
を実行すると、WinRMサービスが有効になり、HTTPリスナーが作成され、ファイアウォールルールが有効になります。これらはすべて、Enable-PSRemoting
で実行されるものですが、これによってマシンがリモートPowerShellセッションを処理できるようには設定されません。
winrm
コマンドの便利な点は、HTTPSリスナーの設定です。手動で行うこともできますが、適切な証明書を持っている場合、winrm quickconfig -transport:https
を実行するだけで、HTTPSリスナーとHTTPSファイアウォールルールが設定されます。
リモートでPSRemotingを有効にする
これまで、ローカルコンピュータでコマンドを実行することでPSRemotingを有効にできることを学びました。これは鶏と卵のような状況になります。PSRemotingを使用してリモートコンピュータでコマンドを実行するには、どのようにリモートでコマンドを実行しますか?まだ PSRemotingがない状態で
3つの方法があります。PSexecユーティリティ、WMI、およびグループポリシー。
Psexecを使用する
PSExecは、PSRemotingのようにリモートコマンドを実行する便利なユーティリティです。ただし、PSexecは異なる通信方法を使用しているため、それを利用することができます!
PSexecを使用すると、次のコマンドを使用してローカルコンピュータからServerBサーバーに接続し、PowerShellプロセスを開始し、Enable-PSRemoting
コマンドを-Force
スイッチと共に実行します。
このオプションは、リモートシステムでPSRemotingを有効にする必要がある一時的なインスタンスに適していますが、多くのシステムでPSRemotingを有効にする場合には適しておらず、psexecをダウンロードする必要があります。
WMIを使用する
PSexecが機能しない場合があります。多くのセキュリティソフトウェアはpsexecをブロックしますが、心配する必要はありません。WMIも使用できます!
PowerShellとInvoke-CimMethod
コマンドレットを使用します。 Invoke-CimMethod
コマンドレットを使用すると、PowerShellはDCOMを介してリモートコンピュータに接続し、メソッドを呼び出すことができます。
幸運なことに、WMIにはプロセスを呼び出すことができるWin32_Process
クラスがあります。Create
メソッドをWin32_Process
に対して呼び出すことにより、Invoke-CimMethod
はリモートコンピュータに接続し、以下に示すようにPowerShellを呼び出してEnable-PSRemoting
を実行します。
以下の例では、セッション接続用のハッシュテーブルが作成されています。このハッシュテーブルでは、サーバー名、資格情報、およびプロトコルが指定されています。次のハッシュテーブルでは、Invoke-CimMethod
のパラメータが設定されています。これらが実行されると、DCOMプロトコルを介してCIMセッションが作成され、それによってPowerShellプロセスが開始され、Enable-PSRemoting
コマンドが実行されます。
これをドメイン環境で使用する場合、コマンドを実行しているユーザーが宛先サーバーに管理者権限を持っている場合、
Credential = Get-Credential
の行は除外できます。
グループポリシーの使用
WinRMを一斉に有効にするための最後であり、おそらく最良のオプションは、グループポリシーを使用することです。グループポリシーを使用すると、単一のグループポリシーオブジェクトを作成し、一度に数千台のコンピューターにそのポリシーを適用することができます。
すべてのコンピューターは、グループポリシーを使用するためにアクティブディレクトリドメインに所属している必要があります。
一度に多くのコンピューターでWinRMを有効にするために、次の3つの異なる設定項目を設定する必要があります:
- WinRMサービスを有効にする。
- WinRM用のWindowsファイアウォールポートを開く。
- WinRMリスナーを作成し、それに接続を許可する。
最初に、ドメインコントローラーにRDPします。または、ドメインに参加しているワークステーションにリモートサーバー管理ツール(RSAT)パッケージをインストールします。これにより、グループポリシー管理コンソール(GPMC)が利用できるようになります。
WinRMサービスの有効化
すべての対象コンピューターでWinRMサービスを有効にするには:
- GPMCを開き、GPOを作成します。新しいGPO内で、コンピューターの構成 —> Windowsの設定 —> セキュリティ設定 —> システムサービス
- Windows Remote Management(WS-Management)を選択します。
- 構成パネルで、このポリシー設定を定義するのチェックボックスを選択します。
- 自動のラジオボタンを選択して、WinRMサービスを起動時に自動的に開始するように設定します。
- 設定を確認するためにOKをクリックします。
Windowsファイアウォールポートの開放
次に、対象のすべてのコンピューターでWinRMポートを開放する必要があります。前述のGPOを編集しているときに:
- コンピューターの構成 —> Windowsの設定 —> セキュリティ設定 —> Windows Defenderファイアウォール(詳細設定)に移動します。
2. 新しいインバウンドルールを作成するために、新しいインバウンドルールをクリックします。
3. 最初のページで、事前定義を選択し、以下のようにWindows Remote Managementを選択します。

4. 次のページで、ドメイン/プライベートネットワークルールのチェックボックスをオンにします。環境でパブリックネットワークが使用されており、それらからのリモート接続を許可する必要がある場合を除き、デフォルトのままにします。

5. 次のページでは、デフォルトのままに接続を許可にして、ルールを作成するために「完了」をクリックします。
WinRMリスナーとフィルタリストの作成
GPOに追加する最後の設定項目は、WinRMリスナーの作成とそのWinRMリスナーへの接続を許可することです。この設定は、HTTP用のWinRMリスナーを作成し、指定されたIPまたはIP範囲からの接続を許可します。
WinRM GPOを編集している場合:
- コンピューターの構成 —> 管理用テンプレート —> Windowsコンポーネント —> Windows Remote Management (WinRM) —> WinRMサービスに移動します。
2. 設定WinRMを介したリモートサービス管理を許可するで有効を選択します。
3. WinRMを介したリモートサーバー管理を許可するの設定で、IPv4フィルタとIPv6フィルタの両方にアスタリスク(*
)を入力します。以下のように表示されます。
各フィルタリストで複数のホストをカンマで区切って指定することができます。これにより、事前にどのホストがすべてのターゲットコンピュータに接続するかを知ることができます。

4. OK をクリックして、最新のGPO設定を確認します。
GPOの適用
この時点で、GPOは作成されて準備が整っているはずです。今やるべき最後のタスクは、このGPOをWinRMを有効にしたいすべてのターゲットコンピュータに適用することです。このチュートリアルでは、ターゲットコンピュータにGPOを割り当てる方法については学びません。
Active DirectoryでコンピュータにGPOを割り当てる方法がわからない場合は、この記事をチェックしてください。
次の手順
このチュートリアルでは、さまざまな方法でPSRemotingを有効にする方法を学びました。PSRemotingを有効にする方法は、環境によって大きく異なるため、ここであなたのシナリオをカバーできたことを願っています。
今学んだことを活用して、環境でPSRemotingを始めましょう!