通过PSEXEC批量将用户添加至远程桌面用户组
批量通过PsExec将用户添加到多台计算机的Remote Desktop Users组
好的,我来帮你把单台的命令扩展成批量处理的脚本,针对你提到的需求,我准备了两种常见场景的实现方案,你可以根据自己的实际情况选择:
场景1:给多台计算机添加同一个域用户
如果你的需求是把同一个域用户批量加入多台计算机的Remote Desktop Users组,只需要准备一个每行包含一个计算机标识(也就是你原来命令里的%cn%值)的文本文件(比如命名为computers.txt),然后用下面的批处理脚本:
@echo off setlocal enabledelayedexpansion :: 先设置好要添加的用户信息,替换成你实际的域、名、姓 set "domain=your_domain_name" set "first_name=your_user_firstname" set "last_name=your_user_lastname" set "full_user=!domain!\!first_name!.!last_name!" :: 循环读取computers.txt里的每一行(每行对应一个cn值) for /f "delims=" %%c in (computers.txt) do ( echo 正在处理计算机: pc-%%c :: 这里可以加上/accepteula参数跳过PsExec首次运行的协议提示 psexec /accepteula \\pc-%%c NET LOCALGROUP "Remote Desktop Users" !full_user! /ADD echo --------------------------- ) endlocal pause
脚本说明:
setlocal enabledelayedexpansion用来确保循环内部的变量能正确解析- 提前定义好域和用户的名、姓,组合成完整的域用户路径
for /f命令会逐行读取computers.txt的内容,把每行的值作为%%c代入到你的PsExec命令里
场景2:每台计算机对应不同的用户
如果你的需求是给不同的计算机添加不同的用户,可以准备一个包含计算机标识、用户名字、用户姓氏的文本文件(比如computer_user_list.txt),每行格式为cn值 名 姓(比如001 John Doe),然后用下面的脚本:
@echo off setlocal enabledelayedexpansion set "domain=your_domain_name" :: 循环读取每行的cn、fn、ln值,按空格分隔成三个部分 for /f "tokens=1,2,3 delims= " %%c in (computer_user_list.txt) do ( set "full_user=!domain!\%%d.%%e" echo 正在给计算机pc-%%c添加用户: !full_user! psexec /accepteula \\pc-%%c NET LOCALGROUP "Remote Desktop Users" !full_user! /ADD echo --------------------------- ) endlocal pause
脚本说明:
tokens=1,2,3会把每行的内容按空格拆分成三个部分,分别赋值给%%c(cn值)、%%d(用户名字)、%%e(用户姓氏)- 动态组合成对应域用户后执行添加命令
注意事项
- 确保PsExec工具在你的系统PATH环境变量里,或者把它放在脚本的同一目录下,否则需要写完整路径(比如
C:\PsTools\psexec.exe) - 运行这个脚本的账号必须拥有所有目标计算机的管理员权限
- 目标计算机需要开启文件和打印机共享,并且防火墙要放行PsExec的通信端口
- 如果执行时遇到PsExec的协议提示,一定要加上
/accepteula参数跳过
内容的提问来源于stack exchange,提问作者cgitech
相关产品推荐
相关产品推荐

