Windows 命令行本身不支持直接批量创建用户,必须借助批处理(.bat)或 PowerShell 脚本读取结构化数据文件(如 users.txt 或 users.csv)并循环执行 net user 或 New-LocalUser;批处理需严格处理空格与特殊字符,PowerShell 更安全可靠,支持密码加密、CSV 解析及精细权限配置。
windows 命令行本身不支持直接批量创建用户,net user 只能单条执行。真正实现批量,必须配合批处理(.bat)或 powershell 脚本,读取外部文件并循环调用 net user。关键不在命令多高级,而在于数据格式、引号处理和参数顺序是否严谨。
准备结构化用户数据文件
新建一个纯文本文件(如 users.txt),每行一条用户记录,字段用英文空格分隔(不要用逗号或制表符):
- 第一字段:用户名(不能含空格;若必须含空格,后续脚本需加双引号包裹)
- 第二字段:密码(避免使用
&、|、^等 CMD 特殊字符;含空格时必须整体用双引号) - 第三字段起:其他 net user 参数,如
/add /fullname:"John Doe" /expires:never
示例内容(保存为 UTF-8 或 ANSI 编码):
alice P@ssw0rd /add /fullname:"Alice Smith" /expires:never /passwordchg:no<br>bob Secur3Pass /add /fullname:"Bob Lee" /comment:"IT Support"
编写并运行批处理脚本
新建 create_users.bat,内容如下(注意空格和引号不可省略):
@echo off<br>for /f "tokens=1,2,* delims= " %%a in (users.txt) do (<br> echo 正在创建用户:%%a<br> net user "%%a" "%%b" %%c 2>nul<br> if errorlevel 1 (<br> echo ❌ 创建失败:%%a<br> ) else (<br> echo ✅ 创建成功:%%a<br> )<br>)<br>pause
-
"tokens=1,2,* delims= "表示取第1列用户名、第2列密码、第3列及之后全部作为参数 -
%%c直接传递剩余参数(如/add /fullname:...),保持灵活性 - 必须以管理员身份运行该 BAT 文件(右键 → “以管理员身份运行”)
创建后统一配置权限与策略
用户建好后,再批量加组、设密码永不过期等——这些操作不能和 /add 合并在同一命令中:
- 加入远程桌面组:
for %i in (alice bob) do net localgroup "Remote Desktop Users" %i /add - 禁用密码过期:
for %i in (alice bob) do net user %i /expires:never /passwordchg:no - 提升为管理员:
for %i in (alice bob) do net localgroup Administrators %i /add
注意:net localgroup 中组名含空格时必须加英文双引号,如 "Administrators"。
更推荐:用 PowerShell 替代批处理
PowerShell 对密码安全、CSV 解析、错误捕获更可靠,尤其适合生产环境:
- 准备 users.csv(用制表符或英文逗号分隔,首行为列名):
Username,Password,FullName<br>alice,P@ssw0rd,"Alice Smith"<br>bob,Secur3Pass,"Bob Lee"
- 运行脚本(需管理员权限):
$users = Import-Csv .\users.csv<br>foreach ($u in $users) {<br> $sec = ConvertTo-SecureString $u.Password -AsPlainText -Force<br> New-LocalUser -Name $u.Username -Password $sec -FullName $u.FullName -PasswordNeverExpires<br> Add-LocalGroupMember -Group "Users" -Member $u.Username<br>}
PowerShell 自动处理特殊字符、无需手动转义,也支持精细权限控制(如指定用户描述、主目录等)。


















