powershell批量创建带随机强密码的新用户需三步:生成满足复杂度要求的密码(含大小写字母、数字、符号且排除易混淆字符)、用new-localuser或new-aduser创建账户、循环执行并导出信息;必须以管理员权限运行。
在 windows 中,用 powershell 批量创建带随机强密码的新用户,核心是三步:生成安全随机密码、调用 new-localuser(或 new-aduser)创建账户、批量循环执行。关键在于密码必须满足复杂度要求(大写+小写+数字+符号,且不包含易混淆字符),并确保脚本以管理员权限运行。
生成符合策略的随机密码
Windows 本地账户默认要求密码至少 8 位,含大小写字母、数字和符号。可用 .NET 的 System.Random 配合预定义字符集实现可控随机性,避免使用 Get-Random 直接拼接(易出现不符合复杂度的情况)。
推荐做法:
- 分别定义大写字母、小写字母、数字、符号四个字符池(如去掉
I, l, O, 0, 1等易混淆字符) - 每类至少取 1 个字符,再从全部字符中随机补足到所需长度(例如 12 位)
- 打乱顺序后组合成最终密码
创建本地用户(无需域环境)
使用 New-LocalUser 命令,需提前将密码转为 SecureString。注意该命令仅适用于 Windows 10/11 Pro 及以上版本,且必须以管理员身份运行。
示例关键代码段:
New-LocalUser "User001" -Password $Password -FullName "User One" -Description "Auto-created account"
批量创建并导出账号信息
把用户名列表(可从数组、CSV 或自动生成)传入循环;每次生成独立密码,避免重复;建议将用户名和对应密码保存到加密文件或安全位置(切勿明文存桌面)。
实用技巧:
- 用
1..5 | ForEach-Object { "User{0:D3}" -f $_ }自动生成 User001–User005 - 用
Export-Csv -Path .\users.csv -NoTypeInformation记录账号与密码(务必后续手动删除或加密该文件) - 添加
-UserMayNotChangePassword或-PasswordNeverExpires参数按需控制策略
域环境:用 Active Directory 模块
若在域中操作,需安装 RSAT 工具并导入 ActiveDirectory 模块。替换命令为 New-ADUser,密码仍需 ConvertTo-SecureString,但额外需指定 -Path(OU 路径)、-AccountPassword 和 -Enabled $true。
注意:
- 域密码策略(如最小长度、历史记录)由组策略统一控制,脚本无需重复校验
-
New-ADUser不支持直接设置密码问题/答案,需后续用Set-ADAccountPassword或 UI 补充 - 首次登录前建议用
Set-ADUser -ChangePasswordAtLogon $true强制改密











