次の方法で共有


リモート要件について

概要

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

詳細説明

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

注: 多くのコマンドレット (Get-Service、Get-Process、Get-WMIObject、Get-EventLog、Get-WinEvent コマンドレットなど) は、Microsoft .NET Framework メソッドを使用してオブジェクトを取得することで、リモート コンピューターからオブジェクトを取得します。 PowerShell リモート処理インフラストラクチャは使用しません。 このドキュメントの要件は、これらのコマンドレットには適用されません。

ComputerName パラメーターを持っていてもリモート処理Windows PowerShell使用しないコマンドレットを見つけるには、コマンドレットの ComputerName パラメーターの説明を参照してください。

システム要件

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

  • 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

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

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

Windows リモート管理 (WinRM) 3.0 および Microsoft .NET Framework 4 は、Windows オペレーティング システムのWindows 8、Windows Server 2012、および新しいリリースに含まれています。 WinRM 3.0 は、古いオペレーティング システムのWindows Management Framework 3.0 に含まれています。 コンピューターに必要なバージョンの WinRM または Microsoft .NET Frameworkがない場合、インストールは失敗します。

ユーザーのアクセス許可

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

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

既定のセッション構成 (Microsoft.PowerShell、Microsoft.PowerShell32、Microsoft.PowerShell.Workflow) のセキュリティ記述子では、Administrators グループのメンバーにのみアクセスできます。

現在のユーザーにセッション構成を使用するアクセス許可がない場合、コマンドを実行するコマンド (一時的なセッションを使用) またはリモート コンピューターで永続的なセッションを作成するコマンドは失敗します。 ユーザーは、セッションを作成するコマンドレットの ConfigurationName パラメーターを使用して、別のセッション構成 (使用可能な場合) を選択できます。

コンピューター上の Administrators グループのメンバーは、既定のセッション構成のセキュリティ記述子を変更し、異なるセキュリティ記述子を使用して新しいセッション構成を作成することで、リモートでコンピューターに接続するアクセス許可を持つユーザーを特定できます。

セッション構成の詳細については、「 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

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

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

管理者として実行する

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

  • ローカル コンピューターへのリモート接続の確立。 これは一般に"ループバック" シナリオと呼ばれます。

  • ローカル コンピューターでのセッション構成の管理。

  • ローカル コンピューターで WS-Management 設定を表示および変更する。 WSMAN: ドライブの LocalHost ノードの設定を次に示します。

これらのタスクを実行するには、ローカル コンピューターの Administrators グループのメンバーである場合でも、"管理者として実行" オプションを使用して PowerShell を起動する必要があります。

Windows 7 および Windows Server 2008 R2 で、"管理者として実行" オプションでWindows PowerShellを開始するには、

  1. [スタート] ボタンをクリックし、[すべてのプログラム]、[アクセサリ] の順にクリックし、[Windows PowerShell] フォルダーをクリックします。
  2. Windows PowerShellを右クリックし、[管理者として実行] をクリックします。

[管理者として実行] オプションを使用してWindows PowerShellを開始するには:

  1. [スタート] をクリックし、[すべてのプログラム] をクリックし、Windows PowerShell フォルダーをクリックします。
  2. Windows PowerShellを右クリックし、[管理者として実行] をクリックします。

[管理者として実行] オプションは、ショートカットなど、Windows PowerShellの他の Windows エクスプローラー エントリでも使用できます。 項目を右クリックし、[管理者として実行] をクリックします。

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

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

サポートされているすべてのバージョンの Windows を実行しているコンピューターは、PowerShell へのリモート接続を確立し、構成なしで PowerShell でリモート コマンドを実行できます。 ただし、接続を受信し、ユーザーがローカルおよびリモートのユーザー管理 PowerShell セッション ("PSSessions") を作成し、ローカル コンピューターでコマンドを実行できるようにするには、コンピューターで PowerShell リモート処理を有効にする必要があります。

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

サポートされている他のすべてのバージョンの Windows では、powerShell リモート処理を有効にするには、Enable-PSRemoting コマンドレットを実行する必要があります。

PowerShell のリモート処理機能は、WinRM サービスによってサポートされています。これは、Microsoft による Web Services for Management (WS-Management) プロトコルの実装です。 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」を参照してください。

ポリシーについて

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

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

関連項目

about_Remote

about_Remote_Variables

about_PSSessions

Invoke-Command

Enter-PSSession

New-PSSession