遠端 PowerShell、WinRM 失敗:WinRM 無法完成操作
使用 執行
Enter-PSSession COMPUTERNAME
時Enable-PSWSManCombinedTrace
,我在 Windows 遠端管理操作日誌中看到以下相關消息:WSMan 操作獲取失敗,錯誤程式碼 2150859046
WinRM 無法完成該操作。驗證指定的電腦名稱是否有效,該電腦可通過網路訪問,並且 WinRM 服務的防火牆例外已啟用並允許從該電腦進行訪問。預設情況下,公共配置文件的 WinRM 防火牆例外限制對同一本地子網中的遠端電腦的訪問。
由於以下錯誤,WinRM 協議操作失敗:由於以下錯誤,無法從伺服器檢索元數據:WinRM 無法完成操作。驗證指定的電腦名稱是否有效,該電腦可通過網路訪問,並且 WinRM 服務的防火牆例外已啟用並允許從該電腦進行訪問。預設情況下,公共配置文件的 WinRM 防火牆例外限制對同一本地子網中的遠端電腦的訪問。.
而有時:
客戶端從網路層獲得超時(ERROR_WINHTTP_TIMEOUT)
COMPUTERNAME
是域上的 2012 R2 核心伺服器,與遠端 PowerShell、伺服器管理器等執行良好的許多其他伺服器具有相同的組策略。我可以對這個系統進行 RDP,我可以從中獲取 WMI 數據(例如Get-WmiObject -ComputerName COMPUTERNAME -Class Win32_OperatingSystem
返回它應該返回的數據),並且以其他方式,它似乎執行得很好。雖然它已經通過組策略設置,但我已經嘗試(無數次)啟用 WinRM 和遠端 PowerShell,例如
Enable-PSRemoting
,或呼叫此命令單獨執行的附帶步驟。我已更改為不同的網路介面,我已確保同一網段上的其他系統不會出現這些症狀,我已遵循 的建議
Get-Help about_Remote_Troubleshooting
,並將必要的山羊獻給了 Baal。沒有什麼幫助。這些症狀可以從任何域客戶端複製到此伺服器,或者如果您通過 IP 聯繫伺服器(將其放入 TrustedHosts 之後)。沒有其他伺服器出現此問題。在我的環境中至少有 2 台其他伺服器上沒有軟體或配置(一直到啟用的韌體規則和安裝的功能)。
有任何想法嗎?
最新發現:
netsh http show iplist``127.0.0.1
在非工作系統上返回,但在工作系統上不返回任何內容。正如@out-null 在評論中正確指出的那樣,5985 正在監聽 127.0.0.1 的事實是一個問題。我已經從配置 WinRM 設置的 GPO 中排除了這個系統,並手動創建了監聽器:
winrm create winrm/config/Listener?Address=*+Transport=HTTP
但是,netstat 中的結果是相同的。請注意下面的輸出
winrm e
,其中 IP 被列為偵聽器。還在糾結這個。。。
原始證據/健全性檢查
$> winrm e winrm/config/listener Listener [Source="GPO"] Address = * Transport = HTTP Port = 5985 Hostname Enabled = true URLPrefix = wsman CertificateThumbprint ListeningOn = 10.11.10.117, 127.0.0.1, 169.254.34.30, 169.254.47.200, 169.254.236.165, ::1, fe80::5efe:10.115.63.10 7%16, fe80::5efe:169.254.34.30%45, fe80::28b8:be74:53c:2fc8%12, fe80::69a9:e404:12bd:63c0%15, fe80::7cf2:ec84:332f:221e%14, fe80::cdc6:5ca0:6ae2:eca5%13 $> netsh winhttp show proxy Current WinHTTP proxy settings: Direct access (no proxy server). $> Get-NetFirewallRule WINRM-HTTP-In-TCP | fl * Name : WINRM-HTTP-In-TCP ID : WINRM-HTTP-In-TCP Group : @FirewallAPI.dll,-30267 Platform : {} LSM : False DisplayName : Windows Remote Management (HTTP-In) Enabled : True Profile : Domain, Private Direction : Inbound Action : Allow EdgeTraversalPolicy : Block PrimaryStatus : OK Status : The rule was parsed successfully from the store. (65536) EnforcementStatus : NotApplicable PolicyStoreSourceType : Local Caption : Description : Inbound rule for Windows Remote Management via WS-Management. [TCP 5985] ElementName : @FirewallAPI.dll,-30253 InstanceID : WINRM-HTTP-In-TCP CommonName : PolicyKeywords : PolicyDecisionStrategy : 2 PolicyRoles : ConditionListType : 3 CreationClassName : MSFT|FW|FirewallRule|WINRM-HTTP-In-TCP ExecutionStrategy : 2 Mandatory : PolicyRuleName : Priority : RuleUsage : SequencedActions : 3 SystemCreationClassName : SystemName : DisplayGroup : Windows Remote Management LocalOnlyMapping : False LooseSourceMapping : False Owner : Platforms : {} PolicyStoreSource : PersistentStore Profiles : 3 RuleGroup : @FirewallAPI.dll,-30267 StatusCode : 65536 PSComputerName : CimClass : root/standardcimv2:MSFT_NetFirewallRule CimInstanceProperties : {Caption, Description, ElementName, InstanceID...} CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties COMPUTERNAME$> netstat -anp tcp Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING TCP 0.0.0.0:49155 0.0.0.0:0 LISTENING TCP 0.0.0.0:49174 0.0.0.0:0 LISTENING TCP 0.0.0.0:49178 0.0.0.0:0 LISTENING TCP 0.0.0.0:49191 0.0.0.0:0 LISTENING TCP 10.11.10.117:135 192.168.5.71:64570 ESTABLISHED TCP 10.11.10.117:135 192.168.5.71:64571 ESTABLISHED TCP 10.11.10.117:135 192.168.5.71:64572 ESTABLISHED TCP 10.11.10.117:139 0.0.0.0:0 LISTENING TCP 10.11.10.117:3389 10.1.1.2:57970 ESTABLISHED TCP 10.11.10.117:49153 10.1.1.2:58100 ESTABLISHED TCP 10.11.10.117:50601 192.168.5.111:8014 ESTABLISHED TCP 10.11.10.117:56508 192.168.5.177:445 ESTABLISHED TCP 127.0.0.1:5985 0.0.0.0:0 LISTENING TCP 127.0.0.1:47001 0.0.0.0:0 LISTENING TCP 169.254.34.30:139 0.0.0.0:0 LISTENING SOME-WORKING-COMPUTER$> netstat -anp tcp Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:5985 0.0.0.0:0 LISTENING TCP 0.0.0.0:47001 0.0.0.0:0 LISTENING TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING TCP 0.0.0.0:49155 0.0.0.0:0 LISTENING TCP 0.0.0.0:49158 0.0.0.0:0 LISTENING TCP 0.0.0.0:49187 0.0.0.0:0 LISTENING TCP 0.0.0.0:49192 0.0.0.0:0 LISTENING TCP 0.0.0.0:49199 0.0.0.0:0 LISTENING TCP 0.0.0.0:49213 0.0.0.0:0 LISTENING TCP 192.168.5.11:139 0.0.0.0:0 LISTENING TCP 192.168.5.11:5985 10.1.1.2:58153 ESTABLISHED TCP 192.168.5.11:5985 10.1.1.2:58154 ESTABLISHED TCP 192.168.5.11:5985 10.1.1.2:58156 ESTABLISHED TCP 192.168.5.11:49203 192.168.5.177:49210 ESTABLISHED TCP 192.168.5.11:49213 192.168.5.177:52784 ESTABLISHED TCP 192.168.5.11:49213 192.168.5.177:54507 ESTABLISHED TCP 192.168.5.11:49213 192.168.5.177:59034 ESTABLISHED TCP 192.168.5.11:52905 192.168.5.177:49210 TIME_WAIT TCP 192.168.5.11:52906 192.168.5.177:49210 TIME_WAIT TCP 192.168.5.11:52907 192.168.5.111:8014 ESTABLISHED TCP 192.168.5.11:52910 192.168.5.177:49210 TIME_WAIT TCP 192.168.5.11:52915 192.168.5.177:49210 TIME_WAIT TCP 192.168.5.11:52918 192.168.5.177:49210 TIME_WAIT TCP 192.168.5.11:52920 192.168.5.177:49210 TIME_WAIT TCP 192.168.5.11:52922 192.168.5.177:49210 ESTABLISHED TCP 192.168.5.11:52923 192.168.5.177:49210 ESTABLISHED TCP 192.168.5.11:52924 192.168.5.177:49210 ESTABLISHED TCP 192.168.5.11:52925 192.168.5.177:49210 ESTABLISHED TCP 192.168.5.11:52926 192.168.5.177:49210 ESTABLISHED TCP 192.168.5.11:52927 192.168.5.177:49210 ESTABLISHED TCP 192.168.5.11:54938 192.168.6.8:49157 ESTABLISHED TCP 192.168.5.11:62632 192.168.5.177:49210 ESTABLISHED TCP 192.168.5.11:64307 192.168.6.8:389 ESTABLISHED
在我最近添加到問題中的證據的幫助下,終於解決了這個問題:
netsh http 顯示 iplist
IP addresses present in the IP listen list: ------------------------------------------- 127.0.0.1
在這工作的系統上,該列表是空的。起初,這對我來說似乎是違反直覺的。儘管如此,我還是試了一下:
> netsh http delete iplisten ipaddress=127.0.0.1
緊接著,我注意到以下輸出
netstat
:>netstat -anp tcp Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING TCP 0.0.0.0:5985 0.0.0.0:0 LISTENING TCP 0.0.0.0:47001 0.0.0.0:0 LISTENING TCP 0.0.0.0:49152 0.0.0.0:0 LISTENING TCP 0.0.0.0:49153 0.0.0.0:0 LISTENING TCP 0.0.0.0:49154 0.0.0.0:0 LISTENING TCP 0.0.0.0:49155 0.0.0.0:0 LISTENING TCP 0.0.0.0:49175 0.0.0.0:0 LISTENING TCP 0.0.0.0:49179 0.0.0.0:0 LISTENING TCP 0.0.0.0:49190 0.0.0.0:0 LISTENING TCP 10.115.63.107:139 0.0.0.0:0 LISTENING TCP 10.115.63.107:3389 10.115.13.25:64873 ESTABLISHED TCP 10.115.63.107:49235 192.168.40.146:445 ESTABLISHED TCP 10.115.63.107:49291 192.168.40.45:8014 ESTABLISHED TCP 169.254.34.30:139 0.0.0.0:0 LISTENING
確實,WinRM 的工作方式應有盡有。
我推測,通過測試,如果沒有配置 HTTP 偵聽器,那麼所有 HTTP 偵聽器都將綁定到預設實體:
0.0.0.0
. 因為將環回地址配置為偵聽器地址,所以偵聽器改為綁定到此地址。在某些時候,我一定採取了一些導致這種配置的措施,但我不確定如何。無論如何,它現在工作正常。謝謝大家。