我正在尝试让两台工作组计算机(均为 Windows 2012 R2)通过 WinRM 使用 PowerShell 相互通信。我们将它们称为 ServerA 和 ServerB。我在两台计算机上运行了以下命令:
Enable-PSRemoting -Force
Set-Item WsMan:\localhost\client\trustedhosts Server[A|B]
Restart-Service WinRM
从 ServerB,我可以使用Enter-PSSession ServerA
命令远程连接到 ServerA。但是,我无法反向连接。ServerA 无法连接到 ServerB。我收到以下错误消息:
enter-pssession : 连接到远程服务器 ServerB 失败,并显示以下错误消息:客户端无法连接到请求中指定的目标。请验证目标上的服务是否正在运行并接受请求。查阅目标上运行的 WS-Management 服务的日志和文档,最常见的是 IIS 或 WinRM。如果目标是 WinRM 服务,请在目标上运行以下命令来分析和配置 WinRM 服务:“winrm quickconfig”。有关更多信息,请参阅 about_Remote_Troubleshooting 帮助主题。在行:1 字符:1 + enter-pssession ServerB + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (ServerB:String) [Enter-PSSes sion],PSRemotingTransportException + FullyQualifiedErrorId : CreateRemoteRunspaceFailed
我还尝试将远程会话连接到服务器本身。来自 ServerB 的 IE Enter-PSSession ServerB
。我收到与上述相同的错误。我尝试完全禁用两个防火墙,但也没有帮助。我还尝试执行 a Test-NetConnection ServerB -port 5985
,这会给我一个警告:
警告:TCP 连接到 ServerB:5985 失败
计算机名称:ServerB
远程地址 : ip
远程端口:5985
接口别名:以太网
源地址 : ip
PingSucceeded :真
Ping回复详情 (RTT) :0 毫秒
TcpTestSucceeded :错误
通过使用该Test-NetConnection
命令,我确实在 PowerShell 事件日志中看到了一条条目,内容如下:
错误消息 = 使用“2”个参数调用“.ctor”时发生异常:“无法建立连接,因为目标机器主动拒绝它 ip:5985”...
我还可以采取哪些其他步骤来解决此连接问题?
答案1
winrm quickconfig 命令(或缩写版本 winrm qc)执行以下操作:启动 WinRM 服务,并将服务启动类型设置为自动启动。为使用任何 IP 地址上的 HTTP 或 HTTPS 发送和接收 WS-Management 协议消息的端口配置侦听器。
winrm quickconfig
答案2
网络似乎是这里的问题。如果到端口 5985 的 TCP 连接不起作用,则入站 PSRemoting 就无法正常工作。
您能否验证 ServerB 上的连接配置文件 (Get-NetConnectionProfile)?在公共网络上,侦听器将默认仅使用本地网络,这会导致您尝试从不同子网中的计算机进行连接时出现问题。您可以通过查看入站防火墙规则轻松检查:
$rule = Get-NetFirewallRule -Name WINRM-HTTP-In-TCP
Get-NetFirewallAddressFilter -AssociatedNetFirewallRule $rule
您可以检查允许任何远程地址的规则更新是否能修复此问题:
Set-NetFirewallRule -Name WINRM-HTTP-In-TCP -RemoteAddress Any
显而易见的问题:为什么它以相反的方向工作。我怀疑其他服务器将网络标记为“私有”。在私有网络中,AFAIR 连接