批量开启远程桌面的脚本
准备工作
确保你的 PSTools 目录下有 PsExec.exe 和 up950.txt(每行一个计算机名或IP)。
为了方便查看结果,建议将以下脚本保存为 .bat 文件(例如 Batch_RDP.bat),然后右键“以管理员身份运行”。
1、版本一:标准 PowerShell 版(推荐)
这个版本使用 PowerShell 原生命令,逻辑清晰,且会自动处理“防火墙规则已存在”的报错。
@echo off
chcp 65001 >nul
echo ==========================================
echo 批量开启远程桌面并关闭NLA限制
echo ==========================================
set PSEXEC=D:\PSTools\PsExec.exe
set LIST=D:\PSTools\up950.txt
set USER=.\localroot
set PASS=Cmpw2026#chg$06
if not exist “%LIST%” (
echo [错误] 找不到列表文件: %LIST%
pause
exit /b
)
for /f “usebackq delims=” %%i in (“%LIST%”) do (
echo.
echo [正在处理] %%i …
%PSEXEC% \%%i -u “%USER%” -p “%PASS%” -s -h powershell -Command “Write-Host ‘正在开启远程桌面…’; Set-ItemProperty -Path ‘HKLM:\System\CurrentControlSet\Control\Terminal Server’ -Name fDenyTSConnections -Value 0; Write-Host ‘正在关闭NLA限制…’; Set-ItemProperty -Path ‘HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’ -Name UserAuthentication -Value 0; Write-Host ‘正在放行防火墙3389端口…’; New-NetFirewallRule -DisplayName ‘Allow RDP’ -Direction Inbound -Protocol TCP -LocalPort 3389 -Action Allow -ErrorAction SilentlyContinue; Write-Host ‘正在重启远程桌面服务…’; Restart-Service -Name TermService -Force; Write-Host ‘配置完成!'”
)
echo.
echo ==========================================
echo 所有机器处理完毕!
echo ==========================================
pause
2、版本二:纯 CMD 备用版(防报错)
如果某些老旧机器或精简版系统执行 PowerShell 报错,可以使用这个纯 CMD 版本。它使用 netsh 和 reg 命令,兼容性极强。
@echo off
chcp 65001 >nul
echo ==========================================
echo 批量开启远程桌面并关闭NLA限制 (CMD版)
echo ==========================================
set PSEXEC=D:\PSTools\PsExec.exe
set LIST=D:\PSTools\up950.txt
set USER=.\localroot
set PASS=Cmpw2026#chg$06
if not exist “%LIST%” (
echo [错误] 找不到列表文件: %LIST%
pause
exit /b
)
for /f “usebackq delims=” %%i in (“%LIST%”) do (
echo.
echo [正在处理] %%i …
%PSEXEC% \%%i -u “%USER%” -p “%PASS%” -s -h cmd /c “reg add HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server /v fDenyTSConnections /t REG_DWORD /d 0 /f & reg add HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp /v UserAuthentication /t REG_DWORD /d 0 /f & netsh advfirewall firewall set rule group=远程桌面 new enable=Yes & net stop TermService /y & net start TermService”
)
echo.
echo ==========================================
echo 所有机器处理完毕!
echo ==========================================
pause
3、脚本核心逻辑说明:
usebackq delims=:防止计算机名中包含空格或特殊字符时被截断。
-s -h:以 SYSTEM 权限运行,并隐藏目标机器的控制台窗口,避免打扰目标机器的当前用户。
Restart-Service -Name TermService -Force:修改注册表后,必须重启该服务才能立即生效,否则可能需要等很久或重启电脑。
建议先拿一两台机测试一下这两个脚本,看看哪个执行更顺畅!
4、PSTools工具下载
微软官方PSTools网址:PsTools – Sysinternals | Microsoft Learn
PsTools 套件中包含的工具(可作为包下载)包括:
- PsExec – 远程执行进程
- PsFile – 显示远程打开的文件
- PsGetSid – 显示计算机或用户的 SID
- PsInfo – 列出有关系统的信息
- PsPing – 测量网络性能
- PsKill – 按名称或进程 ID 终止进程
- PsList – 列出有关进程的详细信息
- PsLoggedOn – 查看谁在本地并通过资源共享登录(包含完整源)
- PsLogList – 转储事件日志记录
- PsPasswd – 更改帐户密码
- PsService – 查看和控制服务
- PsShutdown – 关闭计算机,然后重启计算机(可选)
- PsSuspend – 挂起进程
- PsUptime – 显示系统自上次重新启动以来已运行多长时间(PsUptime 的功能已合并到 PsInfo 中)
PsTools 下载包包含一个 HTML 帮助文件,其中包括所有工具的完整使用情况信息。
下载 PsTools Suite (5 MB)
运行软件:
- 客户端:Windows 8.1 及更高版本
- 服务器:Windows Server 2012 及更高版本
- Nano Server:2016 及更高版本















