about_Remote_Troubleshooting

簡単な説明

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

長い説明

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

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

注意

WSMan: ドライブ内のローカルコンピューターの設定を表示または変更するには、[ 管理者として実行 ] オプションを使用して 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 7 と Windows Server 2008 R2 で [ 管理者として実行 ] オプションを使用して windows PowerShell を起動するには

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

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

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

リモート コマンドを受信するコンピューターを構成するには、 コマンドレットを使用 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 します。

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

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

  • 複数のコンピューターで Windows リモート管理 (WinRM) のスタートアップの種類を [自動] に設定するには、 コマンドレットを使用 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 すべてのネットワークの場所の種類に対して成功します。 プライベートおよびドメイン ("ホーム" および "作業") ネットワークへのリモートアクセスを許可するファイアウォール規則を作成します。 パブリックネットワークの場合、同じローカルサブネットからのリモートアクセスを許可するファイアウォール規則が作成されます。

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 リモート管理サービスのファイアウォールの例外を作成できます。

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

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 のサーバー バージョンでは、Windows (WinRM) サービスのWindows リモート管理の種類は [自動] です。

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

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

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

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

$servers = Get-Content servers.txt
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 を変更するには、 Set-Item WSMan: ドライブのコマンドレットを使用します。 セッション構成のセキュリティ記述子を変更するには、 Set-PSSessionConfiguration コマンドレットを Securitydescriptor sddl または showsecuritydescriptor ui パラメーターと共に使用します。

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

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

ERROR:  ACCESS IS DENIED

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

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

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

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

Credential パラメーターの詳細については、「 New-pssession」、「 -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 IP Enter-PSSession Invoke-Command アドレスを受け取ります。 ただし、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 に * (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 パラメーターまたは Port パラメーターを指定しない場合に使用されます。

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 リモート コンピューターに直接アクセスできません。

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

  • ProxyAccessType
  • ProxyAuthentication
  • ProxyCredential

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

  1. コマンドレットの **ProxyAccessType、ProxyAuthentication、**および ProxyCredential パラメーターを使用して、企業のプロキシ設定を使用してセッション オプション オブジェクト 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-PSSessionOption ては、「 New-PSSessionOption」を参照してください。

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

すべてのリモートコマンドに対して、ローカルコンピューター上のすべての PowerShell セッションに対してこれらのオプションを設定するには、 $PSSessionOption ユーザー設定変数を 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 ディレクトリ (など) に対応するものがない System32 ディレクトリ内のツールを使用しようとすると、 Defrag.exe ツールがディレクトリに見つかりません。

セッションで使用されているプロセッサアーキテクチャを確認するには、 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 コマンドレットは、署名されていないスクリプトファイルとフォーマットファイルを含むモジュールを作成します。

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

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

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

Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

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

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、MaxConcurrentOperationsPerUser、MaxConnections 設定など、いくつかのクォータ設定が用意 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 います。

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

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

タイムアウト値によって操作の完了が許可されていない場合、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 リモート ホストで正しく動作しません。

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

応答しないプログラムを終了するには、「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. [管理者として実行] オプション を使用して PowerShell を起動します。

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

    Start-Service WinRM

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

Linux と macOS の制限事項

認証

macOS では基本認証だけが機能し、他の認証スキームを使用しようとすると、プロセスがクラッシュする可能性があります。

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

関連項目

Import-PSSession

Export-PSSession

Import-Module

about_Remote

about_Remote_Requirements

about_Remote_Variables