从 Win10 尝试 WinRM 时失败,但从 WSE2016 尝试时成功

从 Win10 尝试 WinRM 时失败,但从 WSE2016 尝试时成功

我无法PSRemote连接到 Hyper-V 主机,也无法使用 Hyper-V 管理器连接到它。这种情况发生在客户端 VM 上,而不是服务器 VM 上。我可以PSRemote从服务器连接,没有任何问题。

这是我的设置:

  • [HOST] Hyper-V 2016
  • [SERVER] 是 Server Essentials 2016 VM
  • [客户端] 是已加入域的虚拟机,运行 Windows 10 v1607
  • 我使用域管理员账户登录了 [服务器] 和 [客户端]

错误信息:

Enter-PSSession:连接到远程服务器 [HOST] 失败,错误消息如下:WinRM 无法完成该操作。请验证指定的计算机名称是否有效、计算机是否可通过网络访问,以及 WinRM 服务的防火墙例外是否已启用并允许从此计算机进行访问。默认情况下,公共配置文件的 WinRM 防火墙例外会限制对同一本地子网内的远程计算机的访问。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。

[HOST] 防火墙配置:

在此处输入图片描述

故障排除步骤:

  • 我已将 [HOST] 上的 WinRM 防火墙条目设置为All配置文件和Any远程地址
  • 我已经完全禁用了 [HOST] 上的防火墙
  • 我仔细检查了发现的故障排除步骤这里
  • 我已成功在 [HOST] 上运行此命令:C:\>winrm set winrm/config/client @{TrustedHosts="CLIENT"}
  • 我已成功在 [HOST] 上运行此命令:PS C:\> Enable-PSRemoting -Force
  • 我已在 [客户端] 上启动了 WinRM 服务
  • 我已经审查过问答,但那里提供的建议对我来说不起作用。
  • 我已经查看了所有问答这里,但没有一个直接适用。我发现最接近的是这个,但我不确定如何按照描述暂时禁用 [CLIENT] 上的 GPO。

[客户端] 上的 WinRM 事件日志显示以下错误:

命令:

Get-WinEvent -LogName Microsoft-Windows-WinRM/Operational -MaxEvents 10 | Where-Object {$_.LevelDisplayName -eq "Error"} | fl

结果:

TimeCreated  : 3/18/2017 12:43:46 PM
ProviderName : Microsoft-Windows-WinRM
Id           : 142
Message      : WSMan operation CreateShell failed, error code 2150859046

TimeCreated  : 3/18/2017 12:43:46 PM
ProviderName : Microsoft-Windows-WinRM
Id           : 161
Message      : WinRM cannot complete the operation. Verify that the specified computer name is valid, that the
               computer is accessible over the network, and that a firewall exception for the WinRM service is enabled
               and allows access from this computer. By default, the WinRM firewall exception for public profiles
               limits access to remote computers within the same local subnet.

TimeCreated  : 3/18/2017 12:43:46 PM
ProviderName : Microsoft-Windows-WinRM
Id           : 138
Message      : The client got a timeout from the network layer (ERROR_WINHTTP_TIMEOUT)

在我将 [HOST] 和 [SERVER] 从 2012R2 升级到 2016 之前也发生过这种情况,所以这让我相信这是 [CLIENT] 上的问题。

奇怪的是,升级后我暂时能够从 [客户端] 连接。我不记得那是否是在我打开 [服务器] 上的默认安全 GPO 并从备份中导入我的自定义(非安全相关)GPO 设置之前;也许这可能与此有关?

我是否需要在 [CLIENT] 上创建/启用防火墙规则?我无法关闭防火墙作为故障排除步骤,因为它由默认的 WSE GPO 管理;如前所述,我不知道如何暂时覆盖它(或者即使这样做是否安全)。

答案1

我当然没想到答案是……

一时兴起,我尝试使用 FQDN(例如)进行连接。令我惊讶的是,它在和 Hyper-V 管理器host.domain.tld下都顺利通过。Enter-PSSession

这可能是 [客户端] 上的 TCP/IP DNS 设置的问题。我得检查一下。

但就目前而言,这是有效的。

- 编辑 -

好的,我知道了。

[客户端] 上的 hosts 文件包含一条过时的记录,其中包含 [主机] 的过期 IP 地址。这就是为什么 WinRM 仅在我使用 FQDN 时才起作用的原因。

我删除了记录并且一切立即开始正常工作。

相关内容