about_Remote_Troubleshooting

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

トピック

about_Remote_Troubleshooting

概要

Windows PowerShell® でリモート操作のトラブルシューティングを行う方法について説明します。

詳細説明

このセクションでは、WS-Management テクノロジに基づく Windows PowerShell のリモート処理機能を使用する場合に発生する可能性のあるいくつかの問題について説明し、これらの問題の対処方法を示します。

Windows PowerShell を使用する前に、「about_Remote」と「about_Remote_Requirements」で構成と基本的な使用方法についてのガイダンスを参照してください。また、特にパラメーターの説明など、各リモート処理コマンドレットのヘルプ トピックでは、問題を回避するために役立つ有益な情報が提供されています。

このトピックの最新版は、およびその他の Windows PowerShell のヘルプ トピックは、Update-Help コマンドレットを使用してダウンロードできます。また、Microsoft TechNet ライブラリ (https://technet.microsoft.com/library/hh847850(v=wps.630).aspx) でもオンラインで参照できます。

注記:セッション構成、信頼できるホスト、ポート、またはリスナーに対する変更など、WSMan: ドライブでローカル コンピューターの設定を表示または変更するには、[管理者として実行] オプションを使用して Windows PowerShell を起動します。

トラブルシューティングの権限と認証に関する問題

このセクションでは、ユーザーとコンピューターのアクセス許可とリモート処理の要件に関連するリモート処理の問題について説明します。

管理者として実行する方法

        ERROR: Access is denied. You need to run this cmdlet from an elevated
        process.

ローカル コンピューターでリモート セッションを開始する、あるいは、セッション構成、信頼できるホスト、ポート、またはリスナーに対する変更などの、WSMan: ドライブでローカル コンピューターの設定を表示または変更するには、[管理者として実行] オプションを使用して Windows PowerShell を起動します。

[管理者として実行] オプションを使用して Windows PowerShell を起動するには、以下の手順を実行します。

-- Windows PowerShell (または Windows PowerShell ISE) アイコンを右クリックし、[管理者として実行] をクリックします。

Windows PowerShell を、Windows 7 および Windows Server 2008 R2 で [管理者として実行] オプションを使用して起動するには、以下の手順を実行します。

-- Windows のタスク バーで、Windows PowerShell アイコンを右クリックし、[管理者として実行] をクリックします。

注記:Windows Server 2008 R2 では、Windows PowerShell アイコンが既定でタスク バーにピン留めされています。

リモート処理を有効にする方法

        ERROR:  ACCESS IS DENIED
        - or -
        ERROR: The connection to the remote host was refused. Verify that the
        WS-Management service is running on the remote host and configured to
        listen for requests on the correct port and HTTP URL.

コンピューターでリモート コマンドの送信を有効にするには、構成の必要はありません。ただし、リモート コマンドを受信するには、コンピューターで Windows PowerShell のリモート処理を有効にする必要があります。有効にするための作業には、WinRM サービスの開始、WinRM サービスのスタートアップの種類の [自動] への設定、HTTP および HTTPS 接続用のリスナーの作成、および既定のセッション構成の作成が含まれます。

Windows PowerShell のリモート処理は、Windows Server 2012 以降の Windows Server のリリースでは既定で有効になっています。その他のすべてのシステムでは、Enable-PSRemoting コマンドレットを実行してリモート処理を有効にします。また、リモート処理が無効になっている場合に、Enable-PSRemoting コマンドレットを実行して、Windows Server 2012 以降の Windows Server のリリースでリモート処理を再度有効にすることもできます。

リモート コマンドを受信するようにコンピューターを構成するには、Enable-PSRemoting コマンドレットを使用します。次のコマンドを使用すると、すべての必要なリモート設定が有効になり、セッション構成が有効化され、WinRM サービスが再起動されて変更が有効になります。

        Enable-PSRemoting

すべてのユーザー メッセージを抑制するには、以下の手順を実行します。

        Enable-PSRemoting -Force

詳細については、Enable-PSRemoting を参照してください。

企業でリモート処理を有効にする方法

        ERROR:  ACCESS IS DENIED
        - or -
        ERROR: The connection to the remote host was refused. Verify that the
        WS-Management service is running on the remote host and configured to
        listen for requests on the correct port and HTTP URL.

1 台のコンピューターでリモート Windows PowerShell コマンドの受信と接続の受け入れを有効にするには、Enable-PSRemoting コマンドレットを使用します。

企業の複数のコンピューターでリモート処理を有効にするには、次の拡張された方法を使用できます。

  • --リモート処理用のリスナーを構成するをするには、[リスナーの自動構成を許可する] グループ ポリシーを有効にします。手順については、「グループ ポリシーを使用してリスナーを有効にする方法」(後述) を参照してください。

  • --複数のコンピューターで、Windows Remote Management (WinRM) のスタートアップの種類を [自動] に設定をするには、Set-Service コマンドレットを使用します。手順については、「WinRM サービスのスタートアップの種類の設定方法」(後述) を参照してください。

  • --ファイアウォールの例外を有効にするには、グループ ポリシー「Windows ファイアウォール:ローカル ポートの例外を許可する」使用します。手順については、「グループ ポリシーを使用してファイアウォール例外を作成する方法」(後述) を参照してください。

グループ ポリシーを使用してリスナーを有効にする方法

        ERROR:  ACCESS IS DENIED
        - or -
        ERROR: The connection to the remote host was refused. Verify that the
        WS-Management service is running on the remote host and configured to
        listen for requests on the correct port and HTTP URL.

ドメイン内のすべてのコンピューターについてリスナーを構成するには、次のグループ ポリシー パスにある「リスナーの自動構成を許可する」ポリシーを有効にします。

        Computer Configuration\Administrative Templates\Windows Components
          \Windows Remote Management (WinRM)\WinRM service

ポリシーを有効にし、IPv4 および IPv6 フィルターを指定します。ワイルドカード (*) を使用できます。

パブリック ネットワーク上でリモート処理を有効にする方法

        ERROR:  Unable to check the status of the firewall

Enable-PSRemoting コマンドレットは、ローカル ネットワークがパブリックであり、SkipNetworkProfileCheck パラメーターがコマンドで使用されていない場合、このエラーを返します。

サーバー版の Windows では、すべての種類のネットワークの場所で Enable-PSRemoting が成功します。プライベートおよびドメイン (「ホーム」および「社内」) ネットワークへのリモート アクセスを許可するファイアウォール規則が作成されます。パブリック ネットワークでは、同じローカル サブネットからのリモート アクセスを許可するファイアウォール規則が作成されます。

クライアント版の Windows では、プライベート ネットワークおよびドメイン ネットワークで Enable-PSRemoting が成功します。既定ではパブリック ネットワーク上で失敗しますが、SkipNetworkProfileCheck パラメーターを使用すれば Enable-PSRemoting が成功し、同じローカル サブネットからのトラフィックを許可するファイアウォール規則が作成されます。

パブリック ネットワーク上のローカル サブネットの制限を取り除き、任意の場所からのリモート アクセスを許可するには、次のコマンドを実行します。

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

Set-NetFirewallRule コマンドレットは、NetSecurity モジュールによってエクスポートされます。

注記:Windows PowerShell 2.0 では、サーバー版の Windows が動作するコンピューター上で、Enable-PSRemoting はプライベート、ドメイン、およびパブリック ネットワーク上でリモート アクセスを許可するファイアウォール規則を作成します。クライアント版の Windows が動作するコンピューターでは、Enable-PSRemoting は、プライベートおよびドメイン ネットワーク上のみでリモート アクセスを許可するファイアウォール規則を作成します。

グループ ポリシーを使用してファイアウォール例外を作成する方法

        ERROR:  ACCESS IS DENIED
        - or -
        ERROR: The connection to the remote host was refused. Verify that the
        WS-Management service is running on the remote host and configured to
        listen for requests on the correct port and HTTP URL.

ドメイン内のすべてのコンピューターでファイアウォール例外を有効にするには、次のグループ ポリシー パスにある「Windows ファイアウォール:ローカル ポートの例外を許可する」を有効にします。

        Computer Configuration\Administrative Templates\Network
          \Network Connections\Windows Firewall\Domain Profile

このポリシーは、コンピューター上の Administrators グループのメンバーに対し、コントロール パネルの [Windows ファイアウォール] を使用して、Windows リモート管理サービスのためのファイアウォール例外の作成を許可します。

WinRM サービスのスタートアップの種類の設定方法

        ERROR:  ACCESS IS DENIED

Windows PowerShell リモート処理は、Windows リモート管理 (WinRM) サービスに依存します。リモート コマンドをサポートするためには、このサービスが実行されている必要があります。

サーバー版の Windows では、Windows リモート管理 (WinRM) サービスのスタートアップの種類は [自動] です。

しかし、クライアント版の Windows では、WinRM サービスは既定で無効になっています。

リモート コンピューター上でサービスのスタートアップの種類を設定するには、Set-Service コマンドレットを使用します。

複数のコンピューターでコマンドを実行するには、コンピューター名が格納されたテキスト ファイルまたは CSV ファイルを作成します。

たとえば、次のコマンドは、Servers.txt ファイルからコンピューター名の一覧を取得し、すべてのコンピューターで WinRM サービスのスタートアップの種類を [自動] に設定します。

        C:\PS> $servers = Get-Content servers.txt

        C:\PS> Set-Service WinRM -ComputerName $servers -startuptype Automatic

結果を表示するには、Get-WMIObject コマンドレットを Win32_Service オブジェクトとともに使用します。詳細については、Set-Service を参照してください。

既定のセッション構成を再作成する方法

        ERROR:  ACCESS IS DENIED

ローカル コンピューターに接続し、リモートでコマンドを実行するには、ローカル コンピューターにリモート コマンド用のセッション構成が含まれている必要があります。

Enable-PSRemoting を使用すると、ローカル コンピューター上で既定のセッション構成が作成されます。リモート ユーザーは、リモート コマンドに ConfigurationName パラメーターが含まれていないときに、これらのセッション構成を使用します。

コンピューター上に既定の構成が登録されていないか削除された場合は、Enable-PSRemoting コマンドレットを使用して再作成します。このコマンドレットは繰り返し使用できます。機能がすでに構成されている場合でもエラーは発生しません。

既定のセッション構成を変更し、元の既定のセッション構成を復元する必要がある場合は、Unregister-PSSessionConfiguration コマンドレットを使用して変更されたセッション構成を削除した後、Enable-PSRemoting コマンドレットを使用して復元します。Enable-PSRemoting では、既存のセッション構成は変更されません。

注記:Enable-PSRemoting が既定のセッション構成を復元するとき、構成の明示的なセキュリティ記述子は作成されません。代わりに、既定でセキュリティ保護された RootSDDL のセキュリティ記述子を継承します。

RootSDDL セキュリティ記述子を表示するには、次のように入力します。

        Get-Item wsman:\localhost\Service\RootSDDL

RootSDDL を変更するには、WSMan: ドライブで Set-Item コマンドレットを使用します。セッション構成のセキュリティ記述子を変更するには、Set-PSSessionConfiguration コマンドレットを SecurityDescriptorSDDL または ShowSecurityDescriptorUI パラメーターとともに使用します。

WSMan: ドライブの詳細については、WSMan プロバイダー ("Get-Help wsman") のヘルプ トピックを参照してください。

管理者の資格情報を指定する方法

        ERROR:  ACCESS IS DENIED

PSSession を作成したり、リモート コンピューターでコマンドを実行するには、既定では現在のユーザーがリモート コンピューター上で Administrators グループのメンバーになっている必要があります。現在のユーザーが、Administrators グループのメンバーになっているアカウントでログオンしている場合でも、資格情報が必要な場合があります。

現在のユーザーがリモート コンピューター上で Administrators グループのメンバーになっているか、Administrators グループのメンバーの資格情報を提供できる場合は、New-PSSession、Enter-PSSession、または Invoke-Command コマンドレットの Credential パラメーターを使用してリモートで接続します。

たとえば、次のコマンドは Administrator の資格情報を指定します。

        Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

Credential パラメーターの詳細については、New-PSSession、Enter-PSSession、または Invoke-Commandを参照してください。

管理者以外のユーザーでリモート処理を有効にする方法

        ERROR:  ACCESS IS DENIED

PSSession を確立したり、リモート コンピューター上でコマンドを実行したりするには、ユーザーにリモート コンピューター上でセッション構成を使用するアクセス許可が必要です。

既定では、コンピューター上の Administrators グループのメンバーだけが既定のセッション構成を使用するアクセス許可を持っています。したがって、Administrators グループのメンバーだけがコンピューターにリモートで接続できます。

他のユーザーに対してローカル コンピューターへの接続を許可するには、ローカル コンピューター上で既定のセッション構成に対する Execute アクセス許可をユーザーに付与します。

次のコマンドは、ローカル コンピューター上の既定の Microsoft.PowerShell セッション構成のセキュリティ記述子を変更できるプロパティ シートを開きます。

        Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI

詳細については、「about_Session_Configurations」を参照してください。

他のドメインの管理者に対するリモート処理を有効にする方法

        ERROR:  ACCESS IS DENIED

別のドメインのユーザーがローカル コンピューター上で Administrators グループのメンバーになっている場合、そのユーザーは管理者権限でローカル コンピューターにリモート接続できません。既定では、他のドメインからのリモート接続は、標準のユーザー特権トークンのみで実行されます。

ただし、LocalAccountTokenFilterPolicy レジストリ エントリを使用して既定の動作を変更し、Administrators グループのメンバーになっているリモート ユーザーに管理者特権での実行を許可することができます。

注意:LocalAccountTokenFilterPolicy エントリは、影響を受けるすべてのコンピューターのすべてのユーザーについて、ユーザー アカウント制御 (UAC) のリモート制限を無効にします。ポリシーを変更する前に、この設定の影響を慎重に検討してください。

ポリシーを変更するには、次のコマンドを使用して、LocalAccountTokenFilterPolicy レジストリ エントリの値を 1 に設定します。

        C:\PS> New-ItemProperty -Name LocalAccountTokenFilterPolicy -Path `
            HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System -PropertyType `
            DWord -Value 1

リモート コマンドで IP アドレスを使用する方法

        ERROR:  The WinRM client cannot process the request. If the
        authentication scheme is different from Kerberos, or if the client
        computer is not joined to a domain, then HTTPS transport must be used
        or the destination machine must be added to the TrustedHosts
        configuration setting.

New-PSSession、Enter-PSSession および Invoke-Command コマンドレットの ComputerName パラメーターでは、有効な値として IP アドレスを使用できます。ただし、Kerberos 認証は IP アドレスをサポートしていないため、IP アドレスを指定した場合は必ず NTLM 認証が既定で使用されます。

NTLM 認証を使用する場合は、リモート処理のために次の手順が必要です。

  • 1. コンピューターで HTTPS トランスポートを構成するか、リモート コンピューターの IP アドレスをローカル コンピューター上の TrustedHosts リストに追加します。

    手順については、後述する「信頼できるホストの一覧にコンピューターを追加する方法」を参照してください。

  • 2. すべてのリモート コマンドで Credential パラメーターを使用します。

    これは、現在のユーザーの資格情報を送信している場合でも必要です。

ワークグループ ベースのコンピューターからリモートで接続する方法

        ERROR:  The WinRM client cannot process the request. If the
        authentication scheme is different from Kerberos, or if the client
        computer is not joined to a domain, then HTTPS transport must be used
        or the destination machine must be added to the TrustedHosts
        configuration setting.

ローカル コンピューターがドメインに属していない場合は、次の手順がリモート処理に必要です。

  • 1. コンピューターで HTTPS トランスポートを構成するか、リモート コンピューターの名前をローカル コンピューター上の TrustedHosts リストに追加します。

    手順については、後述する「信頼できるホストの一覧にコンピューターを追加する方法」を参照してください。

  • 2. ワークグループベースのコンピューターでパスワードが設定されていることを確認します。パスワードが設定されていないか、パスワードの値が空白の場合は、リモート コマンドを実行できません。

    ユーザー アカウントのパスワードを設定するには、コントロール パネルの [ユーザー アカウント] を使用します。

  • 3. すべてのリモート コマンドで Credential パラメーターを使用します。

    これは、現在のユーザーの資格情報を送信している場合でも必要です。

信頼できるホストの一覧にコンピューターを追加する方法

TrustedHosts 項目には、コンピューター名、IP アドレス、および完全修飾ドメイン名のコンマ区切りのリストを含めることができます。ワイルドカードを使用できます。

信頼できるホストの一覧を表示または変更するには、WSMan: ドライブを使用します。TrustedHost 項目は WSMan:\localhost\Client ノードにあります。

コンピューター上の Administrators グループのメンバーだけが、コンピューター上の信頼できるホストのリストを変更するアクセス許可を持っています。

注意:TrustedHosts 項目に設定する値は、コンピューターのすべてのユーザーに影響します。

信頼できるホストの一覧を表示するには、次のコマンドを使用します。

        Get-Item wsman:\localhost\Client\TrustedHosts

Set-Location コマンドレット (alias = cd) を使用して、WSMan: ドライブのその場所に移動することもできます。たとえば、次のように入力します。"cd WSMan:\localhost\Client; dir"。

信頼できるホストの一覧にすべてのコンピューターを追加するには、次のコマンドを使用します。これにより、値 * (すべて) が ComputerName に設定されます。

        Set-Item wsman:localhost\client\trustedhosts -Value *

また、ワイルドカード文字 (*) を使用して、特定のドメイン内のすべてのコンピューターを信頼できるホストのリストに追加することもできます。たとえば、次のコマンドは、Fabrikam ドメインのすべてのコンピューターを信頼できるホストのリストに追加します。

        Set-Item wsman:localhost\client\trustedhosts *.fabrikam.com

信頼できるホストのリストに特定のコンピューターの名前を追加するには、次のコマンド形式を使用します。

        Set-Item wsman:\localhost\Client\TrustedHosts -Value <ComputerName>[,<ComputerName>]

それぞれの値 <ComputerName> は次の形式になっている必要があります。

        <Computer>.<Domain>.<Company>.<top-level-domain>

たとえば、次のように入力します。

        Set-Item wsman:\localhost\Client\TrustedHosts -Value Server01.Domain01.Fabrikam.com

信頼できるホストの既存のリストにコンピューター名を追加するには、まず現在の値を変数に保存し、現在の値と新しい値を含むコンマ区切りのリストに値を設定します。

たとえば、信頼できるホストの既存のリストにコンピューター Server01 を追加するには、次のコマンドを使用します。

        $curValue = (Get-Item wsman:\localhost\Client\TrustedHosts).value

        Set-Item wsman:\localhost\Client\TrustedHosts -Value "$curValue, Server01.Domain01.Fabrikam.com"

信頼できるホストのリストに特定のコンピューターの IP アドレスを追加するには、次のコマンド形式を使用します。

        Set-Item wsman:\localhost\Client\TrustedHosts -Value <IP Address>

たとえば、次のように入力します。

        Set-Item wsman:\localhost\Client\TrustedHosts -Value 172.16.0.0

リモート コンピューターの TrustedHosts リストにコンピューターを追加するには、TrustedHosts コマンドレットを使用して、ローカル コンピューター上の WSMan: ドライブにリモート コンピューターのノードを追加します。その後 Set-Item コマンドを使用してコンピューターを追加します。

Connect-WSMan コマンドレットの詳細については、Connect-WSMan を参照してください。

コンピューターの構成に関する問題のトラブルシューティング

このセクションでは、コンピューター、ドメイン、またはエンタープライズの特定の構成に関連するリモート処理の問題について説明します。

代替ポートのサブ トピック上でリモート処理を構成する方法

        ERROR:  The connection to the specified remote host was refused. Verify
        that the WS-Management service is running on the remote host and 
        configured to listen for requests on the correct port and HTTP URL.

Windows PowerShell のリモート処理では、既定で HTTP トランスポートにポート 80 を使用します。ユーザーがリモート コマンドで ConnectionURI パラメーターまたは Port パラメーターを指定しない場合、常に既定のポートが使用されます。

Windows PowerShell が使用する既定のポートを変更するには、WSMan: ドライブで Set-Item コマンドレットを使用して、リスナー リーフ ノードの Port 値を変更します。

たとえば、次のコマンドは、既定のポートを 8080 に変更します。

        Set-Item wsman:\localhost\listener\listener*\port -Value 8080

プロキシ サーバーを使用してリモート処理を構成する方法

        ERROR: The client cannot connect to the destination specified in the
        request. Verify that the service on the destination is running and is
        accepting requests.

Windows PowerShell のリモート処理は HTTP プロトコルを使用するため、HTTP プロキシの設定の影響を受けます。プロキシ サーバーを保有している企業では、ユーザーが Windows PowerShell リモート コンピューターに直接アクセスできません。

この問題を解決するには、リモート コマンドでプロキシ設定オプションを使用します。次の設定を使用できます。

  • -- ProxyAccessType

  • -- ProxyAuthentication

  • -- ProxyCredential

特定のコマンドでこれらのオプションを設定するには、次の手順に従います。

  • 1. New-PSSessionOption コマンドレットの ProxyAccessType、ProxyAuthentication、および ProxyCredential パラメーターを使用して、自社用のプロキシ設定を使用したセッション オプション オブジェクトを作成します。このオプション オブジェクトを変数に保存します。

  • 2. オプション オブジェクトが格納されている変数を、New-PSSession、Enter-PSSession、または Invoke-Command コマンドの SessionOption パラメーターの値として使用します。

たとえば、次のコマンドは、プロキシ セッション オプションを使用してセッション オプション オブジェクトを作成し、そのオブジェクトを使用してリモート セッションを作成します。

        C:\PS> $SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
                -ProxyAuthentication Negotiate -ProxyCredential Domain01\User01

        C:\PS> New-PSSession -ConnectionURI https://www.fabrikam.com

New-PSSessionOption コマンドレットに関する詳細については、New-PSSessionOption.Insert セクションの本文を参照してください。

現在のセッションのすべてのリモート コマンドにこれらのオプションを設定するには、New-PSSessionOption がユーザー設定変数 $PSSessionOption の値に作成するオプション オブジェクトを使用します。ユーザー設定変数 $PSSessionOption の詳細については、「about_Preference_Variables」を参照してください。

ローカル コンピューター上のすべての Windows PowerShell セッションについて、すべてのリモート コマンドでこれらのオプションを設定するには、ユーザー設定変数 $PSSessionOption を Windows PowerShell プロファイルに追加します。Windows PowerShell プロファイルの詳細については、「about_Profiles」を参照してください。

64 ビット コンピューターで 32 ビットのセッションを検出する方法

        ERROR: The term "<tool-Name>" is not recognized as the name of a cmdlet,
        function, script file, or operable program. Check the spelling of the
        name, or if a path was included, verify that the path is correct and try
        again.

リモート コンピューターで 64 ビット版の Windows が動作し、リモート コマンドが Microsoft.PowerShell32 などの 32 ビットのセッション構成を使用している場合、Windows リモート管理 (WinRM) により WOW64 プロセスが読み込mされ、Windows により %Windir%\System32 ディレクトリに対するすべての参照が %windir%\SysWOW64 ディレクトリに自動的にリダイレクトされます。

その結果、Defrag.exe など、System32 ディレクトリ内のツールのうち、SysWow64 ディレクトリに対応するツールがないものを使用しようとすると、ツールがそのディレクトリに見つかりません。

セッションで使用されているプロセッサ アーキテクチャを確認するには、PROCESSOR_ARCHITECTURE 環境変数の値を使用します。次のコマンドは、$s 変数内のセッションのプロセッサ アーキテクチャを確認します。

        C:\PS> $s = New-PSSession -ComputerName Server01 -configurationName CustomShell

        C:\PS> invoke-command -session $s {$env:PROCESSOR_ARCHITECTURE}
        x86

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

ポリシーと基本設定の問題のトラブルシューティング

このセクションでは、ローカルおよびリモート コンピューター上で設定されているポリシーと基本設定に関連するリモート処理の問題について説明します。

Import-PSSession と Import-Module の実行ポリシーを変更する方法

        ERROR: Import-Module: File <filename> cannot be loaded because the
        execution of scripts is disabled on this system.

Import-PSSession および Export-PSSession コマンドレットは、署名されていないスクリプト ファイルと書式設定ファイルを含むモジュールを作成します。

Import-PSSession または Import-Module を使用して、これらのコマンドレットによって作成されるモジュールをインポートするには、現在のセッションの実行ポリシーが Restricted または AllSigned であってはなりません。(Windows PowerShell の実行ポリシーについては、「about_Execution_Policies」を参照してください。)

レジストリに設定されているローカル コンピューターの実行ポリシーを変更せずにモジュールをインポートするには、Set-ExecutionPolicy の Scope パラメーターを使用して、1 つのプロセスに対するより制限の少ない実行ポリシーを設定します。

たとえば、次のコマンドは、RemoteSigned 実行ポリシーを使用するプロセスを開始します。実行ポリシーの変更は現在のプロセスのみに影響し、Windows PowerShell の ExecutionPolicy レジストリ設定は変更されません。

        Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

また、PowerShell.exe の ExecutionPolicy パラメーターを使用して、より制限の少ない実行ポリシーで 1 つのセッションを開始することもできます。

        PowerShell.exe -ExecutionPolicy RemoteSigned

コマンドレットに関する詳細については、「Import-PSSession」、「Export-PSSession」、および「Import-Module」を参照してください。実行ポリシーの詳細については、「about_Execution_Policies」を参照してください。PowerShell.exe コンソールのヘルプ オプションの詳細については、「PowerShell.exe -?」と入力してください。

クォータの設定および変更方法

        ERROR: The total data received from the remote client exceeded allowed
        maximum.

偶発的および悪意による過剰なリソースの使用からローカル コンピューターとリモート コンピューターを保護するために、クォータを使用することができます。

次のクォータは基本的な構成で利用できます。

  • -- WSMan プロバイダー (WSMan:) は、WSMan:\<ComputerName> ノードの MaxEnvelopeSizeKB および MaxProviderRequests 設定や、WSMan:\<ComputerName>\Service ノードの MaxConcurrentOperations、MaxConcurrentOperationsPerUser、および MaxConnections 設定など、複数のクォータ設定を提供します。

  • -- New-PSSessionOption コマンドレットの MaximumReceivedDataSizePerCommand パラメーターと MaximumReceivedObjectSize パラメーター、およびユーザー設定変数 $PSSessionOption を使用して、ローカル コンピューターを保護できます。

  • -- セッション構成に対して制限を追加することで、リモート コンピューターを保護できます。たとえば、Register-PSSessionConfiguration コマンドレットの MaximumReceivedDataSizePerCommandMB パラメーターおよび MaximumReceivedObjectSizeMB パラメーターを使用します。

クォータがコマンドと競合する場合、Windows PowerShell はエラーを生成します。

エラーを解決するには、クォータに準拠するようにリモート コマンドを変更します。または、クォータのソースを特定し、クォータを増やしてコマンドが完了できるようにします。

たとえば、次のコマンドは、リモート コンピューター上の Microsoft.PowerShell セッション構成のオブジェクト サイズ クォータを、10 MB (既定値) から 11 MB に増やします。

        Set-PSSessionConfiguration -Name microsoft.PowerShell ` 
            -MaximumReceivedObjectSizeMB 11 -Force

New-PSSessionOption コマンドレットに関する詳細については、「New-PSSessionOption」を参照してください。

WS-Management クォータの詳細については、WSMan プロバイダーのヘルプ トピックを参照してください ("Get-Help WSMan" と入力します)。

タイムアウト エラーの解決方法

        ERROR: The WS-Management service cannot complete the operation within
        the time specified in OperationTimeout.

偶発的および悪意による過剰なリソースの使用からローカル コンピューターとリモート コンピューターを保護するために、タイムアウトを使用することができます。ローカル コンピューターとリモート コンピューターの両方でタイムアウトが設定されている場合、Windows PowerShell は短いほうのタイムアウト設定を使用します。

次のタイムアウトは基本的な構成で利用できます。

  1. -- WSMan プロバイダー (WSMan:) では、WSMan:\<ComputerName> ノードの MaxTimeoutms 設定や、WSMan:\<ComputerName>\Service ノードの EnumerationTimeoutms および MaxPacketRetrievalTimeSeconds 設定など、いくつかのクライアント側およびサービス側のタイムアウト設定が提供されています。

  2. -- New-PSSessionOption コマンドレットの CancelTimeout、IdleTimeout、OpenTimeout、および OperationTimeout パラメーターと、ユーザー設定変数 $PSSessionOption を使用して、ローカル コンピューターを保護できます。

  3. -- また、セッションのセッション構成で、プログラムを使用してタイムアウト値を設定することで、リモート コンピューターを保護することもできます。

タイムアウト値により操作が完了しない場合、Windows PowerShell は操作を終了してエラーを生成します。

エラーを解決するには、タイムアウト期間内に完了するようにコマンドを変更するか、タイムアウトの制限元を特定し、コマンドが完了するようにタイムアウト時間を長くします。

たとえば、次のコマンドは、New-PSSessionOption コマンドレットを使用して、OperationTimeout 値が 4 分 (ミリ秒単位) のセッション オプション オブジェクトを作成し、そのセッション オプション オブジェクトを使用してリモート セッションを作成します。

        C:\PS> $pso = New-PSSessionoption -OperationTimeout 240000

        C:\PS> New-PSSession -ComputerName Server01 -sessionOption $pso

WS-Management のタイムアウトの詳細については、WSMan プロバイダーのヘルプ トピックを参照してください ("Get-Help WSMan" と入力します)。

New-PSSessionOption コマンドレットに関する詳細については、「New-PSSessionOption」を参照してください。

動作が応答しない場合のトラブルシューティング

このセクションでは、リモート処理でコマンドが完了しないか、Windows PowerShell プロンプトに戻るのが遅くなる問題について説明します。

コマンドを中断する方法

ユーザー インターフェイスを備えたプログラム、入力を要求するコンソール アプリケーション、Win32 コンソール API を使用するコンソール アプリケーションなど、一部のネイティブ Windows プログラムは、Windows PowerShell リモート ホストで正しく動作しません。

これらのプログラムを使用する場合は、出力が行われない、部分的に出力される、リモート コマンド完了しないなど、予期せぬ動作に遭遇する可能性があります。

応答しないプログラムを終了するには、Ctrl キーを押しながら C キーを押します。報告されたすべてのエラーを表示するには、ローカル ホストおよびリモート セッションで「$error」と入力します。

操作エラーから復旧する方法

         ERROR: The I/O operation has been aborted because of either a thread exit
         or an  application request.

このエラーは、操作が完了前に終了した場合に返されます。通常は、他の WinRM 操作の処理中に WinRM サービスが停止または再起動された場合に発生します。

この問題を解決するには、WinRM サービスが実行されていることを確認し、コマンドを再度実行してください。

  • 1. [管理者として実行] オプションを使用して、Windows PowerShell を開始します。

  • 2. 次のコマンドを実行します。

             Start-Service WinRM
    
  • 3. エラーになったコマンドを再度実行します。

関連項目

オンライン版:https://technet.microsoft.com/library/hh847850(v=wps.630).aspx

about_Remote に関するページ

about_Remote_Requirements

about_Remote_Variables