about_Remote_Troubleshooting
適用於: Windows PowerShell 2.0, Windows PowerShell 3.0
主題
about_Remote_Troubleshooting
簡短描述
描述如何對 Windows PowerShell® 中的遠端作業進行疑難排解。
詳細描述
本節描述使用以 WS-Management 技術為基礎的 Windows PowerShell 遠端功能時可能遇到的一些問題,並提供用於解決這些問題之方法的建議。
在使用 Windows PowerShell 遠端之前,請參閱 about_Remote 和 about_Remote_Requirements 以取得有關設定和基本用法的指引。此外,每個遠端 Cmdlet 的說明主題 (特別是參數描述) 提供可協助您避免發生問題的實用資訊。
您可以使用 Update-Help Cmdlet 下載,以及從線上的 Microsoft TechNet Library (https://technet.microsoft.com/library/hh847850(v=wps.630).aspx) 找到本主題的更新版本和其他 Windows PowerShell 說明主題。
注意:若要檢視或變更 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 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.
您不需要進行任何設定,便可讓電腦傳送遠端命令。不過,若要接收遠端命令,則必須在電腦上啟用 Windows PowerShell 遠端功能。啟用作業包括啟動 WinRM 服務、將 WinRM 服務的啟動類型設定為 [自動]、建立 HTTP 和 HTTPS 連線的接聽程式,以及建立預設工作階段設定。
預設會在 Windows Server 2012 和較新版本的 Windows Server 上啟用 Windows PowerShell 遠端功能。在所有其他系統上,請執行 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.
若要讓單一電腦接收遠端 Windows PowerShell 命令和接受連線,請使用 Enable-PSRemoting Cmdlet。
若要為企業中的多部電腦啟用遠端功能,您可以使用下列調整選項。
-- 若要設定用於遠端處理的接聽程式,請啟用 [允許自動設定接聽程式] 群組原則。如需指示,請參閱下面的<如何使用群組原則啟用接聽程式>。
-- 若要將多部電腦上的 Windows 遠端管理 (WinRM) 啟動類型設定為 [自動],請使用 Set-Service Cmdlet。如需指示,請參閱下面的<如何設定 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
當區域網路是公用的,且命令中未使用 SkipNetworkProfileCheck 參數時,Enable-PSRemoting Cmdlet 會傳回這個錯誤。
在 Windows 的伺服器版本上,Enable-PSRemoting 會在所有網路位置類型上成功。它會建立防火牆規則,以允許對私人和網域 (「家用」和「工作」) 網路進行遠端存取。針對公用網路,它會建立防火牆規則,以允許來自同一個本機子網路的遠端存取。
在 Windows 的用戶端版本上,Enable-PSRemoting 會在私人和網域網路上成功。根據預設,如果它在公用網路上失敗,但您使用 SkipNetworkProfileCheck 參數,則 Enable-PSRemoting 會成功並建立防火牆規則,以允許來自同一個本機子網路的流量。
若要移除公用網路上的本機子網路限制,並允許來自任何位置的遠端存取,請執行下列命令:
Set-NetFirewallRule –Name "WINRM-HTTP-In-TCP-PUBLIC" –RemoteAddress Any
Set-NetFirewallRule Cmdlet 是由 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 Cmdlet。
若要在多部電腦上執行命令,您可以建立電腦名稱的文字檔或 CSV 檔案。
例如,下列命令會從 Servers.txt 檔案取得電腦名稱清單,然後將所有電腦上的 WinRM 服務啟動類型設定為 [自動]。
C:\PS> $servers = Get-Content servers.txt
C:\PS> Set-Service WinRM -ComputerName $servers -startuptype Automatic
若要查看結果,請搭配 Win32_Service 物件使用 Get-WMIObject Cmdlet。如需詳細資訊,請參閱 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,請使用 WSMan:磁碟機中的 Set-Item Cmdlet。若要變更工作階段設定的安全性描述元,請搭配 SecurityDescriptorSDDL 或 ShowSecurityDescriptorUI 參數使用 Set-PSSessionConfiguration Cmdlet。
如需 WSMan:磁碟機的詳細資訊,請參閱 WSMan 提供者的說明主題 ("Get-Help wsman")。
如何提供系統管理員認證
ERROR: ACCESS IS DENIED
根據預設,目前的使用者必須是遠端電腦上的 Administrators 群組成員,才能在遠端電腦上建立 PSSession 或執行命令。即使目前的使用者已登入 Administrators 群組成員的帳戶,有時還是需要認證。
如果目前的使用者是遠端電腦上的 Administrators 群組成員,或者可以提供 Administrators 群組成員的認證,請使用 New-PSSession、Enter-PSSession 或 Invoke-Command Cmdlet 的 Credential 參數來進行遠端連線。
例如,下列命令會提供系統管理員的認證。
Invoke-Command -ComputerName Server01 -Credential Domain01\Admin01
如需 Credential 參數的詳細資訊,請參閱 New-PSSession、Enter-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。
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 Cmdlet 的 ComputerName 參數接受 IP 位址做為有效值。不過,由於 Kerberos 驗證不支援 IP 位址,因此當您指定 IP 位址時,預設會使用 NTLM 驗證。
使用 NTLM 驗證時,需要下列程序才能進行遠端處理。
1. 設定用於 HTTPS 傳輸的電腦,或將遠端電腦的 IP 位址新增至本機電腦上的 TrustedHosts 清單中。
如需指示,請參閱下面的<如何將電腦新增至 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 清單中。
如需指示,請參閱下面的<如何將電腦新增至 TrustedHosts 清單中>。
2. 確認已在工作群組電腦上設定密碼。如果未設定密碼或密碼值是空的,您將無法執行遠端命令。
若要設定使用者帳戶的密碼,請使用控制台中的 [使用者帳戶]。
3. 在所有遠端命令中使用 Credential 參數。
即使您提交目前使用者的認證,也需要這個參數。
如何將電腦新增至信任主機清單中
TrustedHosts 項目可以包含電腦名稱、IP 位址和完整網域名稱的逗號分隔清單。允許使用萬用字元。
若要檢視或變更信任主機清單,請使用 WSMan:磁碟機。TrustedHost 項目位於 WSMan:\localhost\Client 節點中。
只有電腦上的 Administrators 群組成員具有變更電腦上之信任主機清單的權限。
注意:您為 TrustedHosts 項目設定的值會影響電腦的所有使用者。
若要檢視信任主機清單,請使用下列命令:
Get-Item wsman:\localhost\Client\TrustedHosts
您也可以使用 Set-Location Cmdlet (別名 = 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 清單中,請使用 Connect-WSMan Cmdlet 將遠端電腦節點新增至本機電腦上的 WSMan:磁碟機中。然後使用 Set-Item 命令來新增電腦。
如需 Connect-WSMan Cmdlet 的詳細資訊,請參閱 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 遠端預設會使用連接埠 80 進行 HTTP 傳輸。當使用者未在遠端命令中指定 ConnectionURI 或 Port 參數時,就會使用預設連接埠。
若要變更 Windows PowerShell 所使用的預設連接埠,請使用 WSMan:磁碟機中的 Set-Item Cmdlet 來變更接聽程式分葉節點中的 Port 值。
例如,下列命令會將預設連接埠變更為 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.
由於 Windows PowerShell 遠端使用 HTTP 通訊協定,因此會受到 HTTP Proxy 設定的影響。在具有 Proxy 伺服器的企業中,使用者無法直接存取 Windows PowerShell 遠端電腦。
若要解決這個問題,請在遠端命令中使用 Proxy 設定選項。您可以使用下列設定︰
-- ProxyAccessType
-- ProxyAuthentication
-- ProxyCredential
若要設定特定命令的這些選項,請使用下列程序:
1. 使用 New-PSSessionOption Cmdlet 的 ProxyAccessType、ProxyAuthentication 和 ProxyCredential 參數,以適用於企業的 Proxy 設定來建立工作階段選項物件。儲存選項物件是一個變數。
2. 使用包含選項物件的變數,做為 New-PSSession、Enter-PSSession 或 Invoke-Command 命令的 SessionOption 參數值。
例如,下列命令會使用 Proxy 工作階段選項來建立工作階段選項物件,然後使用該物件建立遠端工作階段。
C:\PS> $SessionOption = New-PSSessionOption -ProxyAccessType IEConfig `
-ProxyAuthentication Negotiate -ProxyCredential Domain01\User01
C:\PS> New-PSSession -ConnectionURI https://www.fabrikam.com
如需 New-PSSessionOption Cmdlet 的詳細資訊,請參閱此處的 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,且遠端命令使用 32 位元工作階段設定 (例如 Microsoft.PowerShell32),Windows 遠端管理 (WinRM) 會載入 WOW64 處理序,且 Windows 會將 %Windir%\System32 目錄的所有參考自動重新導向至 %windir%\SysWOW64 目錄。
因此,如果您嘗試從 System32 目錄使用在 SysWow64 目錄中沒有對應項目的工具 (例如 Defrag.exe),您無法在目錄中找到這些工具。
若要尋找工作階段所使用的處理器架構,請使用 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 Cmdlet 會建立包含未簽署之指令碼檔案和格式檔案的模組。
若要透過 Import-PSSession 或 Import-Module 匯入這些 Cmdlet 所建立的模組,目前工作階段中的執行原則不可以是 Restricted 或 AllSigned(如需 Windows PowerShell 執行原則的相關資訊,請參閱 about_Execution_Policies)。
若要匯入模組而不變更登錄中設定的本機電腦執行原則,請使用 Set-ExecutionPolicy 的 Scope 參數,為單一處理序設定限制較少的執行原則。
例如,下列命令會使用 RemoteSigned 執行原則來啟動處理序。這項執行原則變更只會影響目前的處理序,而不會變更 Windows PowerShell ExecutionPolicy 登錄設定。
Set-ExecutionPolicy -Scope process -ExecutionPolicy RemoteSigned
您也可以使用 PowerShell.exe 的 ExecutionPolicy 參數,以限制較少的執行原則來啟動單一工作階段。
PowerShell.exe -ExecutionPolicy RemoteSigned
如需 Cmdlet 的詳細資訊,請參閱 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:\<電腦名稱> 節點中的 MaxEnvelopeSizeKB 和 MaxProviderRequests 設定,以及 WSMan:\<電腦名稱>\Service 節點中的 MaxConcurrentOperations、MaxConcurrentOperationsPerUser 和 MaxConnections 設定。
-- 您可以使用 New-PSSessionOption Cmdlet 和 $PSSessionOption 喜好設定變數的 MaximumReceivedDataSizePerCommand 和 MaximumReceivedObjectSize 參數,來保護本機電腦。
-- 您可以對工作階段設定新增限制來保護遠端電腦,例如使用 Register-PSSessionConfiguration Cmdlet 的 MaximumReceivedDataSizePerCommandMB 和 MaximumReceivedObjectSizeMB 參數。
當配額與命令衝突時,Windows PowerShell 會產生錯誤。
若要解決這個錯誤,請變更遠端命令以符合配額。或者,判斷配額的來源,然後再增加配額以完成命令。
例如,下列命令會將遠端電腦上 Microsoft.PowerShell 工作階段設定中的物件大小配額,從 10 MB (預設值) 增加到 11 MB。
Set-PSSessionConfiguration -Name microsoft.PowerShell `
-MaximumReceivedObjectSizeMB 11 -Force
如需 New-PSSessionOption Cmdlet 的詳細資訊,請參閱 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 會使用最短的逾時設定。
以下是基本設定的可用逾時。
-- WSMan 提供者 (WSMan:)提供幾項用戶端和服務端逾時設定,例如 WSMan:\<電腦名稱> 節點中的 MaxTimeoutms 設定,以及 WSMan:\<電腦名稱>\Service 節點中的 EnumerationTimeoutms 和 MaxPacketRetrievalTimeSeconds 設定。
-- 您可以使用 New-PSSessionOption Cmdlet 和 $PSSessionOption 喜好設定變數的 CancelTimeout、IdleTimeout、OpenTimeout 和 OperationTimeout 參數,來保護本機電腦。
-- 您也可以在工作階段設定中,以程式設計方式設定工作階段的逾時值,來保護遠端電腦。
當逾時值不允許作業完成時,Windows PowerShell 會終止作業並產生錯誤。
若要解決這個錯誤,請變更命令以在逾時間隔內完成,或判斷逾時限制的來源並增加逾時間隔以完成命令。
例如,下列命令會使用 New-PSSessionOption Cmdlet 來建立 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 Cmdlet 的詳細資訊,請參閱 New-PSSessionOption。
沒有回應之行為的疑難排解
本節討論使命令無法完成,以及使 Windows PowerShell 提示無法或延遲傳回的遠端問題。
如何中斷命令
某些原生 Windows 程式 (例如具有使用者介面的程式)、提示輸入的主控台應用程式,以及使用 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. 使用 [以系統管理員身分執行] 選項啟動 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