about_Remote_Requirements

簡単な説明

PowerShell でリモート コマンドを実行するためのシステム要件と構成要件について説明します。

詳細な説明

このトピックでは、PowerShell でリモート接続を確立し、リモート コマンドを実行するためのシステム要件、ユーザー要件、リソース要件について説明します。 また、リモート操作を構成する手順も示します。

Note

一部のコマンドレットは、リモート コンピューターの RPC 接続またはリモート接続用の WMI セッションからオブジェクトを取得します。 PowerShell リモート処理インフラストラクチャは使用しません。 このドキュメントの要件は、これらのコマンドレットには適用されません。

ComputerNameパラメーターを持ち、PowerShell リモート処理を使用していないコマンドレットを検索するには、コマンドレットの ComputerName パラメーターの説明を読みます。

システム要件

Windows では、PowerShell リモート処理では、Windows 管理フレームワーク (WMF) によって提供される Windows リモート管理 (WinRM) が使用されます。 PowerShell でリモート セッションを実行するには、ローカル コンピューターとリモート コンピューターに次のものが必要です。

  • Windows PowerShell 3.0 以降
  • Microsoft .NET Framework 4 以降
  • Windows リモート管理 3.0 以降

Windows PowerShell 2.0 でリモート セッションを実行するには、ローカル コンピューターとリモート コンピューターに次のものが必要です。

  • Windows PowerShell 2.0 以降
  • Microsoft .NET Framework 2.0 以降
  • Windows リモート管理 2.0

完全にサポートするには、WMF 5.1 を使用している必要があります。 WMF のサポートの詳細については、「 Windows Management Framework (WMF)」を参照してください。

Windows PowerShell 2.0 を実行しているコンピューターと、新しいバージョンの PowerShell を実行しているコンピューターの間にリモート セッションを作成できます。 ただし、セッションの切断と再接続などの新しいバージョンの PowerShell でのみ実行される機能は、両方のコンピューターが Windows PowerShell 3.0 以降を実行している場合にのみ使用できます。

インストールされている PowerShell のバージョン番号を確認するには、 $PSVersionTable 自動変数を使用します。

PowerShell 7 以降では、SSH 経由の PowerShell リモート処理もサポートされています。 SSH 経由の PowerShell リモート処理を使用すると、SSH を実行している Windows、macOS、または Linux ホストに接続できます。 詳細については、「SSH 経由のPowerShell リモート処理を参照してください。

ユーザーのアクセス許可

リモート セッションを作成してリモート コマンドを実行するには、既定では、現在のユーザーがリモート コンピューターの Administrators グループのメンバーであるか、管理者の資格情報を指定する必要があります。 それ以外の場合、コマンドは失敗します。

セッションの作成とリモート コンピューターでのコマンドの実行に必要なアクセス許可は、セッション構成によって確立されます。 セッション構成では、リモート コンピューター上の接続 エンドポイント の構成オプションを定義します。 具体的には、セッション構成のセキュリティ記述子によって、セッション構成にアクセスできるユーザーと、それを使用して接続できるユーザーが決まります。

既定のセッション構成 ( Microsoft.PowerShell および Microsoft.PowerShell32 のセキュリティ記述子は、 Administrators グループのメンバーへのアクセスのみを許可します。

コンピューター上の Administrators グループのメンバーは、既定のセッション構成のセキュリティ記述子を変更するか、別のセキュリティ記述子で新しいセッション構成を作成することで、リモートでコンピューターに接続するアクセス許可を持つユーザーを決定できます。 ユーザーは、*-PSSession コマンドレットの ConfigurationName パラメーターを使用して、さまざまなエンドポイントに接続できます。

セッション構成の詳細については、「 about_Session_Configurations」を参照してください。

Windows ネットワークの場所

Windows PowerShell 3.0 以降では、 Enable-PSRemoting コマンドレットを使用して、クライアントバージョンとサーバーバージョンの Windows でリモート処理を有効にすることができます。

プライベート ネットワークとドメイン ネットワークを使用する Windows のサーバー バージョンでは、 Enable-PSRemoting コマンドレットによって、無制限のリモート アクセスを許可するファイアウォール規則が作成されます。 また、同じローカル サブネット内のコンピューターからのリモート アクセスのみを許可するパブリック ネットワークのファイアウォール規則も作成します。 このローカル サブネット ファイアウォール規則は、パブリック ネットワーク上の Windows のサーバー バージョンでは既定で有効になっていますが、変更または削除された場合 Enable-PSRemoting 規則が再適用されます。

プライベート ネットワークとドメイン ネットワークを使用する Windows のクライアント バージョンでは、 Enable-PSRemoting は無制限のリモート アクセスを許可するファイアウォール規則を作成します。

パブリック ネットワークを使用する Windows のクライアント バージョンでリモート処理を有効にするには、Enable-PSRemoting コマンドレットの SkipNetworkProfileCheck パラメーターを使用します。 このオプションでは、同じローカル サブネット内のコンピューターからのみリモート アクセスを許可するファイアウォール規則が作成されます。

パブリック ネットワークのローカル サブネット制限を削除し、クライアントバージョンとサーバーバージョンの Windows 上のすべての場所からリモート アクセスを許可するには、NetSecurity モジュールのSet-NetFirewallRuleコマンドレットを使用します。 次のコマンドを実行します。

Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Note

ファイアウォール規則の名前は、Windows のバージョンによって異なる場合があります。 ルールの一覧を表示するには、 Get-NetFirewallRule を使用します。 ファイアウォール規則を有効にする前に、規則のセキュリティ設定を表示して、構成が環境に適していることを確認します。

Windows PowerShell 2.0 では、サーバー バージョンの Windows では、 Enable-PSRemoting はすべてのネットワークでリモート アクセスを許可するファイアウォール規則を作成します。

Windows PowerShell 2.0 では、クライアント バージョンの Windows では、 Enable-PSRemoting はプライベート ネットワークとドメイン ネットワークにのみファイアウォール規則を作成します。 ネットワークの場所がパブリックの場合、 Enable-PSRemoting は失敗します。

管理者として実行

次のリモート処理操作には、管理者特権が必要です。

  • ローカル コンピューターへのリモート接続の確立。 これは、一般的に "ループバック" シナリオと呼ばれます。
  • ローカル コンピューターでのセッション構成の管理。
  • ローカル コンピューターでの WS-Management 設定の表示と変更。 WSMAN: ドライブの LocalHost ノードの設定を次に示します。

ローカル コンピューターの Administrators グループのメンバーである場合でも、Run as administrator オプションを使用して PowerShell を起動する必要があります。

cmd.exeなどの別のプログラムから Windows PowerShell を起動する場合は、管理者として実行 オプションを使用してプログラムを起動します。

リモート処理用にコンピューターを構成する方法

サポートされているバージョンの Windows を実行しているコンピューターは、構成なしで PowerShell でリモート接続を確立し、リモート コマンドを実行できます。 ただし、リモート接続を受信するには、コンピューターで PowerShell リモート処理を有効にする必要があります。

Windows Server 2012 以降のリリースの Windows Server では、PowerShell リモート処理が既定で有効になっています。 設定が変更された場合は、 Enable-PSRemoting コマンドレットを実行して既定の設定を復元できます。

既定では、PowerShell のリモート処理機能は、管理用 Web サービス (WS-Management) プロトコルの Microsoft 実装である WinRM サービスによってサポートされます。 PowerShell リモート処理を有効にすると、WS-Management の既定の構成を変更し、ユーザーが WS-Management に接続できるようにするシステム構成を追加します。

リモート コマンドを受信するように PowerShell を構成するには:

  1. 管理者として実行 オプションを使用して PowerShell を起動します。
  2. コマンド プロンプトに Enable-PSRemoting を入力します。

リモート処理が正しく構成されていることを確認するには、次のコマンドなどのテスト コマンドを実行します。これにより、ローカル コンピューターにリモート セッションが作成されます。

New-PSSession

リモート処理が正しく構成されている場合、コマンドはローカル コンピューターにセッションを作成し、セッションを表すオブジェクトを返します。

Id Name        ComputerName    State    ConfigurationName
-- ----        ------------    -----    -----
1  Session1    localhost       Opened   Microsoft.PowerShell

コマンドが失敗した場合は、 about_Remote_Troubleshootingを参照してください。

ポリシーについて理解する

リモートで作業する場合は、ローカル コンピューターとリモート コンピューターの 2 つの PowerShell インスタンスを使用します。 その結果、作業は、ローカル コンピューターとリモート コンピューターの両方の Windows ポリシーと PowerShell ポリシーの影響を受ける可能性があります。

接続する前と接続の確立中に、ローカル コンピューター上のポリシーが有効になります。 接続を使用している場合、リモート コンピューターのポリシーが有効になります。

関連項目