about_Remote_Troubleshooting

簡単な説明

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

長い説明

このセクションでは、WS-Management テクノロジに基づく PowerShell のリモート処理機能を使用するときに発生する可能性のある問題の一部について説明し、これらの問題の解決策を提案します。

PowerShell リモート処理を使用する前に、構成と基本的な使用about_Remoteとabout_Remote_Requirements方法に関するページを参照してください。 また、各リモート処理コマンドレットのヘルプ トピック (特にパラメーターの説明) には、問題を回避するために役立つ有用な情報があります。

注意

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

アクセス許可と認証に関する問題のトラブルシューティング

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

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

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

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

[管理者としてWindows PowerShellを使用して 実行を開始 するには:

  • [ISE] アイコンWindows PowerShell右クリックしWindows PowerShell管理者として 実行] をクリックします

    Windows PowerShell Windows 7 および Windows Server 2008 R2 の [管理者として実行] オプションを使用して開始します。

  • タスク バー Windowsアイコンを右クリックしWindows PowerShell管理者として 実行] をクリックします

    Server 2008 R2 Windows、既定では、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.

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

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

リモート コマンドを受信するコンピューターを構成するには、 コマンドレットを使用 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 台のコンピューターがリモート PowerShell コマンドを受信して接続を受け入れるには、 コマンドレットを使用 Enable-PSRemoting します。

企業内の複数のコンピューターに対してリモート処理を有効にするには、次のスケーリングされたオプションを使用できます。

  • リモート処理用にリスナーを構成するには、[リスナー グループの自動構成を許可 する] ポリシーを 有効にしてください。

  • 複数のコンピューターでリモート管理 (WinRM) Windowsのスタートアップの種類を [自動] に設定するには、 コマンドレットを使用Set-Serviceします。

  • ファイアウォールの例外を有効にするには、[ファイアウォール: ローカル 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ネットワークの場所の種類で成功します。 プライベート ネットワークとドメイン ("Home" ネットワークと "Work" ネットワーク) へのリモート アクセスを許可するファイアウォール規則が作成されます。 パブリック ネットワークの場合、同じローカル サブネットからのリモート アクセスを許可するファイアウォール規則が作成されます。

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

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

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

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

注意

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

注意

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 Firewall: Allow local port exceptions policy in the following グループ ポリシー path:

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

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

ポリシーの構成が正しくない場合は、次のエラーが表示される可能性があります。

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

ポリシーの構成エラーにより、ListeningOn プロパティの値 が空 になります。 次のコマンドを使用して、値を確認します。

PS> Get-WSManInstance winrm/config/listener -Enumerate

cfg                   : http://schemas.microsoft.com/wbem/wsman/1/config/listener
xsi                   : http://www.w3.org/2001/XMLSchema-instance
Source                : GPO
lang                  : en-US
Address               : *
Transport             : HTTP
Port                  : 5985
Hostname              :
Enabled               : true
URLPrefix             : wsman
CertificateThumbprint :
ListeningOn           : {}

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

ERROR:  ACCESS IS DENIED

PowerShell リモート処理は、Windows (WinRM) サービスによって異なります。 リモート コマンドをサポートするには、サービスが実行されている必要があります。

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

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

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

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

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

$servers = Get-Content servers.txt
Set-Service WinRM -ComputerName $servers -startuptype Automatic

結果を表示するには、 コマンドレットとオブジェクトGet-WMIObjectWin32_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 を変更するには、 Set-Item WSMan: ドライブで コマンドレットを使用します。 セッション構成のセキュリティ記述子を変更 Set-PSSessionConfiguration するには、 SecurityDescriptorSDDL または ShowSecurityDescriptorUI パラメーターを指定して コマンドレットを使用します。

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

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

ERROR:  ACCESS IS DENIED

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

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

たとえば、次のコマンドは管理者の資格情報を提供します。

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

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

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

ERROR:  ACCESS IS DENIED

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

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

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

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

Set-PSSessionConfiguration Microsoft.PowerShell -ShowSecurityDescriptorUI

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

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

ERROR:  ACCESS IS DENIED

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

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

注意事項

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

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

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.

および コマンドレットの ComputerName パラメーターNew-PSSession``Enter-PSSessionInvoke-Command、有効な値として 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 = 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> は次のとおりです。

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

次に例を示します。

$server = 'Server01.Domain01.Fabrikam.com'
Set-Item wsman:\localhost\Client\TrustedHosts -Value $server

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

たとえば、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 Connect-WSMan リストにコンピューターを追加するには、 コマンドレットを使用して、リモート コンピューターのノードをローカル コンピューターの WSMan: ドライブに追加します。 次に、 コマンド Set-Item を使用してコンピューターを追加します。

コマンドレットの詳細については、「Connect-WSManConnect-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.

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

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

たとえば、次のコマンドは、既定のポートを 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.

PowerShell リモート処理では HTTP プロトコルが使用されるので、HTTP プロキシ設定の影響を受ける。 プロキシ サーバーを持つ企業では、ユーザーは PowerShell リモート コンピューターに直接アクセスできません。

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

  • ProxyAccessType
  • ProxyAuthentication
  • ProxyCredential

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

  1. コマンドレットの ProxyAccessTypeProxyAuthenticationProxyCredential New-PSSessionOption パラメーターを使用して、企業のプロキシ設定を使用してセッション オプション オブジェクトを作成します。 オプション オブジェクトを変数として保存します。

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

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

$SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
-ProxyAuthentication Negotiate -ProxyCredential Domain01\User01

New-PSSession -ConnectionURI https://www.fabrikam.com

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

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

ローカル コンピューター上のすべての PowerShell $PSSessionOption セッションのすべてのリモート コマンドに対してこれらのオプションを設定するには、PowerShell プロファイルに基本設定変数を追加します。 PowerShell プロファイルの詳細については、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 プロセスを読み込み、Windows $env:Windir\System32 $env:Windir\SysWOW64 はディレクトリへのすべての参照をディレクトリに自動的にリダイレクトします。

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

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

$s = New-PSSession -ComputerName Server01 -ConfigurationName CustomShell
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 にすることはできません。 PowerShell 実行ポリシーの詳細については、PowerShell の実行ポリシーに関するページ about_Execution_Policies

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

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

Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

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

PowerShell.exe -ExecutionPolicy RemoteSigned

実行ポリシーの詳細については、「実行ポリシー」を about_Execution_Policies。 詳細を表示するには「PowerShell.exe -?」を入力します。

クォータを設定および変更する方法

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

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

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

  • WSMan プロバイダー (WSMan:)には、ノードの MaxEnvelopeSizeKB および MaxProviderRequests WSMan:<ComputerName> 設定、ノードの MaxConcurrentOperations、MaxConcurrentOperationsPerUserMaxConnections WSMan:<ComputerName>\Service 設定など、いくつかのクォータ設定が用意されています。

  • ローカル コンピューターを保護するには、コマンドレットの MaximumReceivedDataSizePerCommand パラメーターと MaximumReceivedObjectSize New-PSSessionOption $PSSessionOption パラメーターと基本設定変数を使用します。

  • リモート コンピューターを保護するには、コマンドレットの MaximumReceivedDataSizePerCommandMB パラメーターと MaximumReceivedObjectSizeMB Register-PSSessionConfiguration パラメーターを使用するなどのセッション構成に制限を追加します。

クォータがコマンドと競合すると、PowerShell によってエラーが生成されます。

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

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

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

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

クォータの詳細については、「WS-Management」を 参照about_WSMan_Provider

タイムアウト エラーを解決する方法

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

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

基本構成では、次のタイムアウトを使用できます。

  • WSMan プロバイダー (WSMan:)では、ノードの Maxtimeoutms 設定 WSMan:<ComputerName> やノードの EnumerationTimeoutmsMaxPacketRetrievalTimeSeconds の設定 WSMan:<ComputerName>\Service など、クライアント側とサービス側のタイムアウト設定がいくつか提供されています。

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

  • セッションのセッション構成でタイムアウト値をプログラムによって設定することで、リモートコンピューターを保護することもできます。

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

このエラーを解決するには、タイムアウト間隔内に完了するようにコマンドを変更するか、タイムアウト制限のソースを特定し、タイムアウト間隔を長くしてコマンドを完了できるようにします。

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

$pso = New-PSSessionoption -OperationTimeout 240000

New-PSSession -ComputerName Server01 -sessionOption $pso

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

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

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

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

コマンドを中断する方法

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

これらのプログラムを使用すると、出力がない、部分的な出力、または完了していないリモートコマンドなど、予期しない動作が発生する可能性があります。

応答しないプログラムを終了するには、CTRLCキーを押し + ます。 報告された可能性があるエラーを表示するには、ローカルホストとリモートセッションを入力 $error します。

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

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

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

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

  1. [ 管理者として実行 ] オプションを使用して PowerShell を起動します。

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

    Start-Service WinRM

  3. エラーを生成したコマンドを再実行します。

Linux と macOS の制限事項

認証

MacOS では基本認証のみが機能し、他の認証方式を使用しようとするとプロセスがクラッシュする可能性があります。

Omi 認証の手順を参照してください。

関連項目