PowerShell远程桌面连接求助:需自动跳过安全确认回车操作
Hey,我刚好处理过类似的批量远程桌面连接场景,给你几个解决安全免责弹窗的靠谱方案,还有批量脚本的优化建议:
方案1:通过组策略彻底禁用弹窗(推荐)
这是一劳永逸的方法,适合需要长期批量连接的场景:
- 按下
Win + R,输入gpedit.msc打开本地组策略编辑器 - 导航到路径:计算机配置 > 管理模板 > Windows组件 > 远程桌面服务 > 远程桌面会话主机 > 安全
- 找到**“不显示远程桌面连接的安全警告”**策略,双击后选择「已启用」
- 运行
gpupdate /force命令强制刷新组策略,或者重启电脑生效
方案2:注册表修改(适合无组策略的Windows家庭版)
如果你的系统是家庭版,没有组策略编辑器,直接改注册表也能解决:
- 按下
Win + R,输入regedit打开注册表编辑器 - 定位到:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services - 右键点击
Terminal Services项,新建DWORD(32位)值,命名为fDontShowDisclaimer,设置数值数据为1 - 再新建一个DWORD值
fPromptForPassword,设置数值数据为0 - 关闭注册表,重启电脑后弹窗就不会出现了
方案3:PowerShell自动模拟回车(临时应急)
如果暂时没法修改系统设置,用脚本自动按回车跳过弹窗也是个办法:
# 把你的60个IP放到这个数组里,或者从文本文件读取 $rdpIps = @("192.168.0.10", "192.168.0.11", "替换成你的其他IP") foreach ($ip in $rdpIps) { # 启动远程桌面连接 Start-Process mstsc.exe -ArgumentList "/v:$ip" # 等待弹窗加载(根据你的系统速度调整,比如3-5秒) Start-Sleep -Seconds 3 # 模拟按下回车键跳过提示 Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.SendKeys]::SendWait("{ENTER}") }
⚠️ 注意:这个方案依赖UI加载速度,如果弹窗出来慢,要调大Start-Sleep的时间;非交互式环境下可能失效,所以优先推荐前两个方案。
批量脚本优化小技巧
不用写60个单独的脚本,把所有IP放到一个文本文件(比如rdp_ips.txt,每行一个IP),然后用脚本自动读取:
# 读取IP列表文件 $rdpIps = Get-Content -Path "C:\你的路径\rdp_ips.txt" foreach ($ip in $rdpIps) { # 如果已经禁用弹窗,直接启动连接就行 Start-Process mstsc.exe -ArgumentList "/v:$ip" # 如果还没禁用,就加上前面的自动回车逻辑 }
内容的提问来源于stack exchange,提问作者Sergiu




