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.

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

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

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

  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

また、コマンドレット (alias = cd) を使用 Set-Location して、WSMan: ドライブを場所に移動することもできます。 次に例を示します。

cd WSMan:\localhost\Client; dir

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

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-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.

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

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

たとえば、次のコマンドは、既定のポートを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 リモートコンピューターに直接アクセスすることはできません。

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

  • System.management.automation.remoting.proxyaccesstype
  • ProxyAuthentication
  • ProxyCredential

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

  1. コマンドレットの New-PSSessionOption System.management.automation.remoting.proxyaccesstypeProxyauthentication、および proxyauthentication パラメーターを使用して、企業のプロキシ設定を使用してセッションオプションオブジェクトを作成します。 [保存] オプションオブジェクトは変数です。

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

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

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

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

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

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

すべてのリモートコマンドに対して、ローカルコンピューター上のすべての PowerShell セッションに対してこれらのオプションを設定するには、ユーザー設定変数を PowerShell プロファイルに追加 $PSSessionOption します。 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 が実行されており、リモートコマンドが32ビットのセッション構成 (microsoft.powershell32 など) を使用している場合、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.

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

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

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

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

Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

set-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> 、ノードの MaxConcurrentOperationsmaxconcurrentoperationsperuser プロパティMaxConnections の各設定 WSMan:<ComputerName>\Service など、いくつかのクォータ設定が提供されます。

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

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

クォータがコマンドと競合している場合は、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 認証の手順を参照してください。

関連項目