PowerShell远程批量创建本地用户:单次输入实现多机操作
批量处理本地用户创建与组添加的脚本修改方案
原脚本在每台远程电脑上都会触发多次交互输入,原因是New-LocalUser和Add-LocalGroupMember在远程执行时未传入必要参数,导致每台机器单独弹出提示。要实现单次输入完成所有电脑的操作,只需先在本地收集所有参数,再通过远程执行的参数传递功能批量处理。
修改后的完整脚本(创建新用户并添加到Users组)
# 定义目标电脑列表 $PC = "PC01","PC02","PC03" # 本地单次收集所有必要信息 $newUserName = Read-Host "请输入要创建的本地用户名" $newUserPassword = Read-Host "请输入该用户的密码" -AsSecureString # 远程执行用户创建与组添加操作 Invoke-Command -ComputerName $PC -ScriptBlock { # 接收本地传入的参数 $userName = $args[0] $userPassword = $args[1] # 创建本地用户(补充可选参数避免交互提示) New-LocalUser -Name $userName -Password $userPassword -FullName $userName -Description "批量创建的本地用户" # 将新用户添加到Users组 Add-LocalGroupMember -Group "Users" -Member $userName } -ArgumentList $newUserName, $newUserPassword
核心修改说明
- 提前收集参数:在本地用
Read-Host一次性获取用户名和密码,避免每台远程电脑重复提示。 - 参数传递:通过
Invoke-Command的-ArgumentList参数,把本地收集的变量传递到远程脚本块,远程用$args数组读取这些值。 - 明确命令参数:给
New-LocalUser和Add-LocalGroupMember指定完整的必要参数,消除交互触发条件。
扩展场景:仅添加现有账户到Users组
如果需求是将已存在的账户批量加入Users组,可使用简化版脚本:
$PC = "PC01","PC02","PC03" $memberToAdd = Read-Host "请输入要添加到Users组的账户名" Invoke-Command -ComputerName $PC -ScriptBlock { Add-LocalGroupMember -Group "Users" -Member $args[0] } -ArgumentList $memberToAdd
注意事项
- 执行脚本的账户需拥有所有目标电脑的管理员权限。
- 确保目标电脑已启用WinRM服务(PowerShell远程管理功能)。
- 输入的密码需符合目标电脑的本地密码策略,否则会创建失败。
内容的提问来源于stack exchange,提问作者fromusofa
相关产品推荐
相关产品推荐

