PowerShell创建AD域用户脚本:检测重名用户并提示补充中间名
PowerShell AD用户重名检测脚本修正方案
前置依赖
运行脚本前需要确认已安装RSAT Active Directory PowerShell组件,执行以下命令导入AD模块:Import-Module ActiveDirectory
修正后完整代码
$firstName = Read-Host -Prompt '请输入新用户的名' $lastName = Read-Host -Prompt '请输入新用户的姓' $userName = "$firstName.$lastName" # 检测AD中是否存在同名用户 $adUser = Get-ADUser -Filter {sAMAccountName -eq $userName} -ErrorAction SilentlyContinue if ($null -ne $adUser) { Write-Host "$userName 已被占用" $selection = Read-Host "是否需要添加中间名?(Y/N)" switch ($selection) { 'Y' { $middleName = Read-Host -Prompt "请输入用户的中间名首字母" $userName = "$firstName.$middleName.$lastName" # 可在此处补充对新生成用户名的二次重名检测逻辑 } 'y' { $middleName = Read-Host -Prompt "请输入用户的中间名首字母" $userName = "$firstName.$middleName.$lastName" # 可在此处补充对新生成用户名的二次重名检测逻辑 } 'N' { return } 'n' { return } } } else { # 用户名未被占用,直接执行后续创建用户逻辑 # New-ADUser ...... }
修改说明
- 替换了原代码中错误的重名判断逻辑
if ($username -match -ADUser),改用Get-ADUser实际查询AD域中的用户数据,查询结果非空则判定为用户已存在 - 修复了原代码中
read-host - prompt中间多余空格的语法错误 - 新增了对小写y/n输入的适配,避免用户输入小写字符时脚本无响应
- 预留了二次重名检测和用户创建的逻辑位置,你可以根据自己的实际需求补充对应代码
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

