在Powershell中成功配置和监听WinRM

16

我正在使用命令提示符测试本地和远程计算机的WinRM连接,并且我的问题分为两个部分。

第一部分

我使用ping命令测试了TCP/IP连接,以ping本地计算机和远程计算机的IP地址、默认网关和DNS服务器,并且它在本地和远程计算机上都运行得很好。

但是,在使用WinRM命令进行测试时,我使用了此命令来定位侦听器和地址:

winrm e winrm/config/listener

它为我的本地计算机提供了这个输出

Listener
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn =<IP Address>,127.0.0.1, ::1,fe80::100:7f:fffe%13,fe80::803:5e43:50ef:c50%11

但是当我在远程机器上运行相同的命令时,除了一点不同,其他都相同,输出结果如下:

Listener[Source="GPO"]
.
.
.
ListeningOn=null

我希望进行配置以使其正确监听。

第二部分

当我逐个在远程机器上运行这些命令时

winrm id -r:<machine name>
winrm get winrm/config -r:<machine name>
winrm get wmicimv2/Win32_Service?Name = WinRM -r:<machine name>

出现WSMan错误,错误消息为:

The client cannot connect to the destination specified in the request. Verify
that the service on the destination is running and is accepting requests.Consult
the logs and documentation for WS-Management service running on the destination,
most commonly IIs or WinRM. If the destination is the WinRM service, run the 
following command on the destination to analyse and configure the WinRM service:
"winrm quickconfig". 

然而,当我在本地计算机上运行相同的命令时,命令可以正常运行。

winrm id 
winrm get winrm/config
winrm get wmicimv2/Win32_Service?Name = WinRM

目前,我面临的所有问题都出现在我的远程机器上。是什么导致了这种情况,我该如何配置它以成功连接并监听?谢谢。


第二部分,我现在能够在我的另一个远程机器上运行这些命令并正确输出。

我对我提出问题的特定远程机器进行了一些更改,因此,在我解决问题I之前,它将无法运行这些命令。但除此之外,如果没有进行任何修改,它会像在我其他的远程机器上一样运行。

我仍然希望有人可以帮助我解决问题I,其中我必须去除...

Listener[Source=GPO]
..
.
ListeningOn=null

当我运行以下命令时:

winrm e winrm/config/listener

因为这是导致问题的原因,但我不确定如何禁用/删除组策略设置。


telnet <IP address> 5985 能够建立连接吗?在哪台“本地机器”上可以得到 ListeningOn 的输出?是否在两台主机上都运行了 winrm qc - Ansgar Wiechers
是的,我在本地和远程机器上都运行了winrm qc,并且它们都向我提供了正确的输出,即winRM已设置。 我刚刚在我的问题中进行了更正,“ListeningOn = null”在远程机器上。 - sanya
使用此命令时,我收到以下错误信息: 错误:未知开关:encodedcommand 错误:未知开关:inputformat 错误:未知开关:outputformat 错误:命令行使用无效。输入“winrm -?”获取帮助。 - sanya
请发布您运行的确切命令。 - Ansgar Wiechers
仅提供一般故障排除建议:检查策略、检查事件日志、使用另一个帐户运行命令等。除此之外,我没有更多的想法了。 - Ansgar Wiechers
显示剩余4条评论
6个回答

20

要确定哪个组策略正在配置您的WinRM,您可以从管理员命令提示符中运行以下命令:

gpresult /h result.html & result.html

在显示的结果中,找到 Windows Components/Windows Remote Management (WinRM)/WinRM Service。胜利的GPO是您可以启用/禁用GPO设置的地方。使用 GPMC(组策略管理控制台)来管理组策略。
当管理员在允许侦听器的自动配置中使用了未在受影响服务器上存在的IP或网络时,ListeningOn=null会出现,通常表示管理员错误配置了群组策略IPv4过滤器设置。

9
要重置 IP 地址(ListeningOn),您可能需要重新创建监听器(删除旧的 HTTP 监听器并创建一个新的)。请参见下面的示例。


In PowerShell:

Remove-WSManInstance winrm/config/Listener -SelectorSet @{Address="*";Transport="http"}
New-WSManInstance winrm/config/Listener -SelectorSet @{Address="*";Transport="http"}

以下是绑定特定IP地址的语法:

示例:

New-WSManInstance winrm/config/Listener -SelectorSet @{Address="IP:192.168.100.2";Transport="http"}

在命令提示符中:
winrm delete winrm/config/Listener?Address=*+Transport=HTTP
winrm create winrm/config/Listener?Address=*+Transport=HTTP

更多阅读材料:

相关问题: 仅允许来自一个地址的PowerShell远程管理.


5
我遇到了同样的问题,发现当GPO设置:通过WinRM允许远程服务器管理时,如果将IPv4过滤器设置为我的jumphost的IP地址,则winrm e winrm/config/listener命令会生成ListeningOn=null的问题。

我通过将过滤器设置为*并在防火墙级别上排序权限来解决了这个问题。


1
我解决了这个问题,通过更改GPO,就像Neossian回答的那样(抱歉,没有声望来添加评论)。 但是,“IPv4过滤器”不应为空,也不接受CIDR表示法(那是我的巨大错误)。 正如Craneum所说,使用“*”来侦听任何接口或本地网络设备连接的一些IP地址范围(例如“192.168.0.1-192.168.0.254”或类似内容)。

不要使用“192.168.0.0/24”表示法。 是的,帮助部分非常清楚,但我使用了错误的表示法。


1
您输入的IP范围并不是系统可以访问的范围,而是定义系统可以用作WinRM接口的IP范围。这意味着您需要指定一个包含受GPO影响的所有客户端IP的IP地址范围。

0

请确保在[计算机配置]/[策略]/[管理模板]/[Windows 组件]/[Windows 远程管理(WinRM)]/[WinRM 服务]下定义了一个过滤器(IPv4 和/或 IPv6),以允许远程服务器通过 WinRM 进行管理。

我建议对 IPv4 和 IPv6 都使用 "*" 过滤器,除非您知道要过滤什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接