必须启用winrm服务并绕过交互确认、网络限制和uac截断,推荐新手执行winrm quickconfig -skipnetworkprofilecheck -force,自动启动服务、创建http监听器、配置防火墙;再手动设置allowunencrypted="true"、basic="true"及localaccounttokenfilterpolicy=1,并配置可信主机列表后验证连通性。

要在Windows 10上实现局域网内静默执行PowerShell脚本、Ansible批量操作或自动化工具远程调用,必须启用WinRM服务并绕过交互式确认、网络类型限制和UAC权限截断——否则所有远程命令都会在连接阶段失败。
用一条命令完成基础启用(推荐新手)
以管理员身份运行PowerShell,执行:
winrm quickconfig -SkipNetworkProfileCheck -Force
该命令跳过“公用网络”拦截检查,并自动启动服务、创建HTTP监听器(5985端口)、添加防火墙规则;【-SkipNetworkProfileCheck参数不可省略,否则在家庭版/笔记本默认公用网络下必然报错】。
等待输出出现“WinRM has been updated for remote management”即表示成功。
手动补全关键安全配置(必须做)
方法一:允许未加密通信(仅限可信局域网)
winrm set winrm/config/service @{AllowUnencrypted="true"}
方法二:启用Basic认证(配合本地账户使用)
winrm set winrm/config/service/auth @{Basic="true"}
方法三:解除UAC对远程管理员权限的降级限制
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
这一步不执行会导致远程调用时看似登录成功,但实际无管理员权限——例如无法启动服务、修改系统设置等。
配置客户端信任目标主机
在发起远程命令的控制机(可以是同一台)上执行:
第一步:打开PowerShell(管理员或非管理员均可)
第二步:运行以下命令,将被控机IP加入可信列表
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.100" -Force
若需信任整个子网,可写为"192.168.1.*";若信任所有主机(仅测试环境),用"*"代替IP——【通配符*会降低安全性,生产环境禁用】。
第三步:验证是否写入成功
Get-Item WSMan:\localhost\Client\TrustedHosts
验证WinRM连通性
在控制机执行:
Test-WSMan -ComputerName 192.168.1.100
返回包含“wsmid”“Identify”等XML字段即表示通道已通。
若提示“拒绝访问”,请回头检查LocalAccountTokenFilterPolicy注册表项是否生效;若提示“无法连接到远程主机”,请确认5985端口未被第三方防火墙拦截。
执行Enter-PSSession -ComputerName 192.168.1.100 -Credential (Get-Credential)可进入交互式远程会话,输入被控机本地管理员账号密码即可。











