使用PowerShell远程连接带密码保护的服务器时出现WinRM及会话创建错误的问题求助
解决PowerShell远程连接WinRM报错的问题
我看了你的问题和报错信息,核心问题出在命令执行方式、语法细节,以及TrustedHosts配置的有效性上,一步步来解决:
1. 修复命令执行方式的错误
你把三条命令写在了同一行且未用分号分隔,导致winrm命令误将后续代码当成自己的参数,触发了Invalid use of command line报错。必须分开执行每条命令,或者用分号分隔(不推荐,但可行):
# 推荐:分三条单独执行 winrm set winrm/config/client @{TrustedHosts="XX.X.XXX.XX"} $cred = Get-Credential New-PSSession XX.X.XXX.XX -Credential $cred # 可选:用分号分隔在一行执行 winrm set winrm/config/client @{TrustedHosts="XX.X.XXX.XX"}; $cred = Get-Credential; New-PSSession XX.X.XXX.XX -Credential $cred
2. 修正New-PSSession的语法错误
从报错信息里的命令行可以看到,你的New-PSSession命令中,目标IP和-Credential参数之间缺少了空格,正确的写法是:
New-PSSession XX.X.XXX.XX -Credential $cred
(注意XX.X.XXX.XX和-Credential之间必须有空格)
3. 确认TrustedHosts配置生效
执行完winrm set命令后,一定要验证配置是否成功,避免因为命令执行失败导致TrustedHosts未更新:
winrm get winrm/config/client
查看输出里的TrustedHosts字段,确认你的目标IP已经在列表中。如果需要添加多个IP,用逗号分隔即可:
winrm set winrm/config/client @{TrustedHosts="XX.X.XXX.XX,YY.Y.YYY.YY"}
额外排查点
如果还是报错,可以检查以下内容:
- 目标服务器的WinRM服务是否运行:在目标机执行
Get-Service WinRM,确认状态为Running - 目标服务器防火墙是否允许WinRM端口(默认HTTP是5985,HTTPS是5986)
- 如果你使用HTTP协议连接,必须确保目标IP在TrustedHosts列表中,且提供了明确凭据(你已经通过
Get-Credential完成了这一步)
内容的提问来源于stack exchange,提问作者alfus
相关产品推荐
相关产品推荐

