共用方式為


about_Remote_Troubleshooting

簡短描述

描述如何在PowerShell中針對遠端作業進行疑難解答。

完整描述

本節說明使用以 WS-Management 技術為基礎的 PowerShell 遠端功能時,可能會遇到的一些問題,並建議這些問題的解決方案。

使用 PowerShell 遠端處理之前,請參閱 about_Remoteabout_Remote_Requirements ,以取得設定和基本用途的指引。 此外,每個遠端 Cmdlet 的 [說明] 主題,特別是參數描述,都有一些實用的資訊,其設計目的是協助您避免問題。

注意

若要檢視或變更 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 Windows Server 2012 和較新版本上啟用。 在所有其他系統上,執行 Enable-PSRemoting Cmdlet 以啟用遠端處理。 如果停用遠端功能,您也可以執行 Enable-PSRemoting Cmdlet,在 Windows Server 2012 和更新版本的 Windows Server 上重新啟用遠端功能。

若要將電腦設定為接收遠端命令,請使用 Enable-PSRemoting Cmdlet。 下列命令會啟用所有必要的遠端設定、啟用工作階段設定,並重新啟動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.

若要讓單一計算機接收遠端 PowerShell 命令並接受連線,請使用 Enable-PSRemoting Cmdlet。

若要為企業中的多部計算機啟用遠端功能,您可以使用下列調整選項。

  • 若要設定遠端的接聽程式,請啟用 [允許自動設定接聽程式 ] 組策略。

  • 若要將 Windows 遠端管理 (WinRM) 的啟動類型設定為多部電腦上的 [自動],請使用 Set-Service Cmdlet。

  • 若要啟用防火牆例外狀況,請使用 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參數時,Cmdlet 會傳回此錯誤。

在 Windows 的伺服器版本上, Enable-PSRemoting 所有網路位置類型都會成功。 它會建立防火牆規則,允許遠端訪問私人和網域 (「首頁」和「工作」) 網路。 針對公用網路,它會建立防火牆規則,以允許從相同的本機子網進行遠端訪問。

在 Windows 的用戶端版本上, Enable-PSRemoting 在私人和網域網路上成功。 根據預設,它會在公用網路上失敗,但如果您使用 SkipNetworkProfileCheck 參數, Enable-PSRemoting 會成功並建立防火牆規則,以允許來自相同本機子網的流量。

若要移除公用網路上的本機子網限制並允許從任何位置進行遠端訪問,請執行下列命令:

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

Cmdlet 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 防火牆:在下列 群組原則 路徑中允許本機埠例外狀況原則:

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 的用戶端版本上,預設會停用 WinRM 服務。

若要在遠端電腦上設定服務的啟動類型,請使用 Set-Service Cmdlet。

若要在多部計算機上執行 命令,您可以建立電腦名稱的文字檔或 CSV 檔案。

例如,下列命令會從 Servers.txt 檔案取得計算機名稱的清單,然後將所有計算機上的WinRM服務的啟動類型設定為 [自動]。

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

若要查看結果,請使用 Get-WMIObject Cmdlet 搭配 Win32_Service 物件。 如需詳細資訊,請參閱 Set-Service

如何重新建立預設會話組態

ERROR:  ACCESS IS DENIED

若要連線到本機計算機並遠端執行命令,本機計算機必須包含遠端命令的會話設定。

當您使用 Enable-PSRemoting時,它會在本機計算機上建立預設會話組態。 每當遠端命令不包含 ConfigurationName 參數時,遠端使用者就會使用這些會話設定。

如果電腦上的預設設定已取消註冊或刪除,請使用 Enable-PSRemoting Cmdlet 重新建立它們。 您可以重複使用此 Cmdlet。 如果功能已設定,則不會產生錯誤。

如果您變更預設會話組態並想要還原原始的預設會話組態,請使用 Unregister-PSSessionConfiguration Cmdlet 來刪除已變更的會話組態,然後使用 Enable-PSRemoting Cmdlet 來還原它們。 Enable-PSRemoting 不會變更現有的會話設定。

注意

還原預設會話組態時 Enable-PSRemoting ,它不會為組態建立明確的安全性描述項。 相反地,組態會繼承 RootSDDL 的安全性描述項,預設為安全。

若要查看 RootSDDL 安全性描述元,請輸入:

Get-Item wsman:\localhost\Service\RootSDDL

若要變更 RootSDDL,請使用 Set-Item WSMan: 磁碟驅動器中的 Cmdlet。 若要變更會話設定的安全性描述元,請使用 Set-PSSessionConfiguration Cmdlet 搭配 SecurityDescriptorSDDLShowSecurityDescriptorUI 參數。

如需 WSMan: 磁碟驅動器的詳細資訊,請參閱 WSMan 提供者的說明主題 (“Get-Help wsman”) 。

如何提供系統管理員認證

ERROR:  ACCESS IS DENIED

若要在遠端電腦上建立 PSSession 或執行命令,根據預設,目前的用戶必須是遠端電腦上的 Administrators 群組成員。 即使目前的使用者登入屬於 Administrators 群組成員的帳戶,有時也需要認證。

如果目前使用者是遠端電腦上的 Administrators 群組成員,或可以提供 Administrators 群組成員的認證,請使用 的 Credential 參數 New-PSSessionEnter-PSSessionInvoke-Command Cmdlet 從遠端連線。

例如,下列命令會提供系統管理員的認證。

Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01

如需 Credential 參數的詳細資訊,請參閱 New-PSSessionEnter-PSSessionInvoke-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.

和 Cmdlet 的 New-PSSessionEnter-PSSessionInvoke-CommandComputerName 參數會接受 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 cmdlet (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> 都必須具有下列格式:

<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 Cmdlet 將遠端電腦的節點新增至本機電腦上的 WSMan: 磁碟驅動器。 Set-Item然後使用 命令來新增計算機。

如需 Cmdlet 的詳細資訊 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 遠端功能預設會使用埠 80 進行 HTTP 傳輸。 每當使用者未在遠端命令中指定 ConnectionURI 或 Port 參數時,就會使用預設

若要變更 PowerShell 使用的預設埠,請使用 Set-Item WSMan: 磁碟驅動器中的 Cmdlet 來變更接聽程式分葉節點中的埠值。

例如,下列命令會將預設埠變更為8080。

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

如何使用 Proxy 伺服器設定遠端處理

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 Proxy 設定的影響。 在具有 Proxy 伺服器的企業中,用戶無法直接存取 PowerShell 遠端電腦。

若要解決此問題,請在遠端命令中使用 Proxy 設定選項。 可用的設定如下:

  • ProxyAccessType
  • ProxyAuthentication
  • ProxyCredential

若要針對特定命令設定這些選項,請使用下列程式:

  1. 使用 Cmdlet 的 New-PSSessionOptionProxyAccessTypeProxyAuthenticationProxyCredential 參數,建立具有企業 Proxy 設定的會話選項物件。 儲存選項對像是變數。

  2. 使用包含 option 物件的變數做為 、 Enter-PSSessionInvoke-Command 命令的 SessionOption 參數New-PSSession值。

例如,下列命令會建立具有 Proxy 工作階段選項的工作階段選項物件,然後使用 物件建立遠端會話。

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

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

如需 Cmdlet 的詳細資訊 New-PSSessionOption ,請參閱 New-PSSessionOption

若要為目前工作階段中的所有遠端命令設定這些選項,請使用在喜好設定變數值中建立的選項$PSSessionOption物件New-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,而且遠端命令使用 32 位會話設定,例如 Microsoft.PowerShell32、Windows 遠端管理 (WinRM) 載入 WOW64 程式,而 Windows 會自動將所有參考 $env:Windir\System32 重新導向至目錄 $env:Windir\SysWOW64

因此,如果您嘗試在 System32 目錄中使用沒有 SysWow64 目錄中對應專案的工具,例如 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-PSSessionExport-PSSession Cmdlet 會建立包含未簽署腳本檔案和格式化檔案的模組。

若要匯入這些 Cmdlet 所建立的模組,請使用 Import-PSSessionImport-Module,目前會話中的執行原則不可以是 [限制] 或 [AllSigned]。 如需 PowerShell 執行原則的相關信息,請參閱 about_Execution_Policies

若要匯入模組,而不變更登錄中所設定之本機計算機的執行原則,請使用的 Set-ExecutionPolicyScope 參數為單一進程設定較不嚴格的執行原則。

例如,下列命令會啟動具有執行原則的進程 RemoteSigned 。 執行原則變更只會影響目前的進程,而且不會變更 PowerShell ExecutionPolicy 登錄設定。

Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned

您也可以使用的 PowerShell.exeExecutionPolicy 參數,啟動具有較不嚴格執行原則的單一會話。

PowerShell.exe -ExecutionPolicy RemoteSigned

如需執行原則的詳細資訊,請參閱 about_Execution_Policies。 如需詳細資訊,請鍵入 PowerShell.exe -?

如何設定和變更配額

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

您可以使用配額來保護本機計算機和遠端電腦免於過度使用資源,同時不小心和惡意。

基本組態提供下列配額。

  • WSMan 提供者 (WSMan:) 提供數個配額設定,例如節點中的 MaxEnvelopeSizeKBMaxProviderRequests 設定,以及節點中的 WSMan:<ComputerName>MaxConcurrentOperationsMaxConcurrentOperationsPerUserMaxConnections 設定。WSMan:<ComputerName>\Service

  • 您可以使用 Cmdlet 和$PSSessionOption喜好設定變數的 MaximumReceivedDataSizePerCommandMaximumReceivedObjectSize 參數來保護本機計算機。New-PSSessionOption

  • 您可以將限制新增至會話設定,例如使用 Cmdlet 的 Register-PSSessionConfigurationMaximumReceivedDataSizePerCommandMBMaximumReceivedObjectSizeMB 參數來保護遠端計算機。

當配額與命令衝突時,PowerShell 會產生錯誤。

若要解決此錯誤,請變更遠端命令以符合配額。 或者,判斷配額的來源,然後增加配額以允許命令完成。

例如,下列命令會將遠端電腦上 Microsoft.PowerShell 工作階段設定中的物件大小配額從 10 MB 增加 (預設值) 為 11 MB。

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

如需 Cmdlet 的詳細資訊 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>WSMan:<ComputerName>\ServiceEnumerationTimeoutmsMaxPacketRetrievalTimeSeconds 設定。

  • 您可以使用 Cmdlet 和$PSSessionOption喜好設定變數的 New-PSSessionOptionCancelTimeoutIdleTimeoutOpenTimeoutOperationTimeout 參數來保護本機計算機。

  • 您也可以在會話的會話設定中,以程式設計方式設定逾時值來保護遠端計算機。

當逾時值不允許作業完成時,PowerShell 會終止作業併產生錯誤。

若要解決錯誤,請變更命令以在逾時間隔內完成,或判斷逾時限制的來源,並增加逾時間隔以允許命令完成。

例如,下列命令會 New-PSSessionOption 使用 Cmdlet 在 MS) 中建立 OperationTimeout 值為 4 分鐘 (的工作階段選項物件,然後使用工作階段選項物件來建立遠端會話。

$pso = New-PSSessionoption -OperationTimeout 240000

New-PSSession -ComputerName Server01 -sessionOption $pso

如需 WS-Management 逾時的詳細資訊,請參閱 WSMan 提供者 (類型 Get-Help WSMan) 的說明主題。

如需 Cmdlet 的詳細資訊 New-PSSessionOption ,請參閱 New-PSSessionOption

針對沒有回應的行為進行疑難解答

本節討論防止命令完成並防止或延遲傳回 PowerShell 提示字元的遠端問題。

如何中斷命令

某些原生 Windows 程式,例如具有使用者介面的程式、提示輸入的控制台應用程式,以及使用 Win32 控制台 API 的控制台應用程式,無法在 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 驗證 指示。

另請參閱