Enable-PSRemoting
リモート コマンドを受信するようにコンピューターを構成します。
構文
Enable-PSRemoting
[-Force]
[-SkipNetworkProfileCheck]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
このコマンドレットは、Windows プラットフォームでのみ使用できます。
Enable-PSRemoting
コマンドレットは、WS-Management テクノロジを使用して送信される PowerShell リモート コマンドを受信するようにコンピューターを構成します。 WS-Management ベースの PowerShell リモート処理は、現在、Windows プラットフォームでのみサポートされています。
Windows Server プラットフォームでは、PowerShell リモート処理が既定で有効になっています。 Enable-PSRemoting
を使用すると、サポートされている他のバージョンの Windows で PowerShell リモート処理を有効にしたり、リモート処理が無効になった場合に再び有効にしたりすることができます。
このコマンドは、コマンドを受信する各コンピューターで 1 回だけ実行する必要があります。 コマンドのみを送信するコンピューターで実行する必要はありません。 構成は、リモート接続を受け入れるためにリスナーを開始するため、必要な場所でのみ実行することが賢明です。
コンピューターがパブリック ネットワーク上にある場合に Windows のクライアント バージョンで PowerShell リモート処理を有効にすることは通常禁止されますが、この制限は SkipNetworkProfileCheck パラメーターを使用してスキップできます。 詳細については、 SkipNetworkProfileCheck パラメーターの説明を参照してください。
1 台のコンピューターに複数の PowerShell インストールを並べてインストールできます。 Enable-PSRemoting
を実行すると、コマンドレットを実行している特定のインストール バージョンのリモート処理エンドポイントが構成されます。 そのため、PowerShell 6.2 の実行中に Enable-PSRemoting
を実行すると、PowerShell 6.2 を実行するリモート処理エンドポイントが構成されます。 PowerShell 7 プレビューの実行中に Enable-PSRemoting
を実行すると、PowerShell 7 プレビューを実行するリモート処理エンドポイントが構成されます。
Enable-PSRemoting
は、必要に応じて 2 つのリモート処理エンドポイント構成を作成します。 エンドポイント構成が既に存在する場合は、単に有効であることが保証されます。 作成された構成は同じですが、名前は異なります。 1 つは、セッションをホストする PowerShell バージョンに対応する単純な名前になります。 もう 1 つの構成名には、セッションをホストする PowerShell バージョンに関する詳細情報が含まれています。 たとえば、PowerShell 6.2 で Enable-PSRemoting
を実行すると、 PowerShell.6 PowerShell.6.2.2 という名前の 2 つの構成済みエンドポイントが取得されます。 これにより、単純な名前 PowerShell.6 を使用して、最新の PowerShell 6 ホスト バージョンへの接続を作成できます。 または、PowerShell.6.2.2 長い名前を使用して、特定の PowerShell ホスト バージョンに接続。
新しく有効になったリモート処理エンドポイントを使用するには、Invoke-Command
、New-PSSession
、Enter-PSSession
コマンドレットを使用してリモート接続を作成するときに、ConfigurationName パラメーターで名前で指定する必要があります。 詳細については、「例 4」を参照してください。
Enable-PSRemoting
コマンドレットは、次の操作を実行します。
- Set-WSManQuickConfig コマンドレットを実行し、次のタスクを実行します。
- WinRM サービスを開始する。
- WinRM サービスのスタートアップの種類を "自動" に設定する。
- 任意の IP アドレスで要求を受け入れるリスナーを作成する。
- WS-Management 通信のためのファイアウォールの例外を有効にする。
- 必要に応じて、単純な名前と長い名前のセッション エンドポイント構成を作成します。
- すべてのセッション構成を有効にする。
- すべてのセッション構成のセキュリティ記述子を、リモート アクセスを許可するように変更する。
- 上記の変更を有効にするために、WinRM サービスを再起動する。
Windows プラットフォームでこのコマンドレットを実行するには、[管理者として実行] オプションを使用して PowerShell を起動します。 このコマンドレットは、Linux または MacOS バージョンの PowerShell では使用できません。
注意事項
このコマンドレットは、Windows PowerShell によって作成されたリモート エンドポイント構成には影響しません。
これは、PowerShell バージョン 6 以降で作成されたエンドポイントにのみ影響します。 Windows PowerShell でホストされている PowerShell リモート処理エンドポイントを有効または無効にするには、Windows PowerShell セッション内から Enable-PSRemoting
コマンドレットを実行します。
例
例 1: リモート コマンドを受信するようにコンピューターを構成する
このコマンドは、リモート コマンドを受信するようにコンピューターを構成します。
Enable-PSRemoting
WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.
例 2: 確認プロンプトなしでリモート コマンドを受信するようにコンピューターを構成する
このコマンドは、リモート コマンドを受信するようにコンピューターを構成します。 Force パラメーターは、ユーザー プロンプトを抑制します。
Enable-PSRemoting -Force
WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.
例 3: クライアントでのリモート アクセスを許可する
この例では、Windows オペレーティング システムのクライアント バージョンでパブリック ネットワークからのリモート アクセスを許可する方法を示します。 ファイアウォール規則の名前は、Windows のバージョンによって異なる場合があります。
ルールの一覧を表示するには、 Get-NetFirewallRule
を使用します。 ファイアウォール規則を有効にする前に、規則のセキュリティ設定を表示して、構成が環境に適していることを確認します。
Get-NetFirewallRule -Name 'WINRM*' | Select-Object -Property Name
Name
----
WINRM-HTTP-In-TCP-NoScope
WINRM-HTTP-In-TCP
WINRM-HTTP-Compat-In-TCP-NoScope
WINRM-HTTP-Compat-In-TCP
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
既定では、 Enable-PSRemoting
は、プライベート ネットワークとドメイン ネットワークからのリモート アクセスを許可するネットワーク 規則を作成します。 このコマンドでは、 SkipNetworkProfileCheck パラメーターを使用して、同じローカル サブネット内のパブリック ネットワークからのリモート アクセスを許可します。 このコマンドは、確認メッセージを抑制するために Force パラメーターを指定します。
SkipNetworkProfileCheck パラメーターは、既定で同じローカル サブネット内のパブリック ネットワークからのリモート アクセスを許可する Windows オペレーティング システムのサーバー バージョンには影響しません。
NetSecurity モジュールの Set-NetFirewallRule
コマンドレットは、任意のリモートの場所からパブリック ネットワークからのリモート アクセスを許可するファイアウォール規則を追加します。 これには、異なるサブネット内の場所が含まれます。
例 4: 新しく有効にされたエンドポイント構成へのリモート セッションを作成する
この例では、コンピューターで PowerShell リモート処理を有効にし、構成済みのエンドポイント名を見つけて、いずれかのエンドポイントへのリモート セッションを作成する方法を示します。
最初のコマンドは、コンピューター上で PowerShell リモート処理を有効にします。
2 番目のコマンドは、エンドポイントの構成を一覧表示します。
3 番目のコマンドは、 PowerShell.7 エンドポイントを名前で指定して、同じコンピューターへのリモート PowerShell セッションを作成します。 リモート セッションは、最新の PowerShell 7 バージョン (7.3.0) でホストされます。
最後のコマンドは、リモート セッションの $PSVersionTable
変数にアクセスして、セッションをホストしている PowerShell のバージョンを表示します。
Enable-PSRemoting -Force
Get-PSSessionConfiguration
$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $session -ScriptBlock { $PSVersionTable }
WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.
Name : PowerShell.7
PSVersion : 7.3
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed,
BUILTIN\Administrators AccessAllowed,
BUILTIN\Remote Management Users AccessAllowed
Name : PowerShell.7.3.0
PSVersion : 7.3
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed,
BUILTIN\Administrators AccessAllowed,
BUILTIN\Remote Management Users AccessAllowed
Name Value
---- -----
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSEdition Core
PSRemotingProtocolVersion 2.3
Platform Win32NT
SerializationVersion 1.1.0.1
GitCommitId 6.2.2
WSManStackVersion 3.0
PSVersion 6.2.2
OS Microsoft Windows 10.0.18363
Note
ファイアウォール規則の名前は、Windows のバージョンによって異なる場合があります。 Get-NetFirewallRule
コマンドレットを使用して、システム上の規則の名前を一覧表示します。
パラメーター
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Force
ユーザーに確認せずに、直ちにコマンドを実行します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-SkipNetworkProfileCheck
このコマンドレットは、コンピューターがパブリック ネットワーク上にある場合に、Windows オペレーティング システムのクライアント バージョンでリモート処理を有効にすることを示します。 このパラメーターは、同じローカル サブネット内のコンピューターに対してのみリモート アクセスを許可する、パブリック ネットワークのファイアウォール規則を有効にします。
このパラメーターは、Windows オペレーティング システムのサーバー バージョンには影響しません。既定では、パブリック ネットワーク用のローカル サブネット ファイアウォール規則があります。 ローカル サブネットのファイアウォール規則がサーバー バージョンで無効になっている場合は、このパラメーターの値に関係なく、 Enable-PSRemoting
再度有効にします。
ローカル サブネットの制限を削除し、パブリック ネットワーク上のすべての場所からリモート アクセスを有効にするには、NetSecurity モジュールの Set-NetFirewallRule
コマンドレットを使用します。
このパラメーターは PowerShell 3.0 で導入されました。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
None
このコマンドレットにオブジェクトをパイプすることはできません。
出力
このコマンドレットは、その結果を記述する文字列を返します。
メモ
このコマンドレットは、Windows プラットフォームでのみ使用できます。
Windows オペレーティング システムのサーバー バージョンでは、 Enable-PSRemoting
は、リモート アクセスを許可するプライベート ネットワークとドメイン ネットワークのファイアウォール規則を作成し、同じローカル サブネット内のコンピューターからのリモート アクセスのみを許可するパブリック ネットワークのファイアウォール規則を作成します。
Windows オペレーティング システムのクライアント バージョンでは、 Enable-PSRemoting
は、無制限のリモート アクセスを許可するプライベート ネットワークとドメイン ネットワークのファイアウォール規則を作成します。 同じローカル サブネットからのリモート アクセスを許可するパブリック ネットワークのファイアウォール規則を作成するには、 SkipNetworkProfileCheck パラメーターを使用します。
Windows オペレーティング システムのクライアントまたはサーバー のバージョンで、ローカル サブネットの制限を解除し、リモート アクセスを許可するパブリック ネットワークのファイアウォール規則を作成するには、NetSecurity モジュールの Set-NetFirewallRule
コマンドレットを使用して次のコマンドを実行します。 Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
Enable-PSRemoting
では、すべてのセッション構成の Enabled プロパティの値を $True
に設定することで、すべてのセッション構成を有効にします。
Enable-PSRemoting
は、 Deny_All と Network_Deny_All の設定を削除します。 これにより、ローカルで使用するために予約されたセッション構成へのリモート アクセスが提供されます。
関連リンク
PowerShell