如何在Active Directory中先创建指定OU再批量导入用户
批量创建AD用户并前置创建指定OU的脚本修改
你可以在现有脚本前添加OU存在性检查与创建逻辑,确保目标OU存在后再批量创建用户,完整脚本如下:
# 定义目标OU的完整路径 $OU = "OU=User,OU=Office,DC=Company,DC=com" # 拆分出父OU路径(用于检查/创建时定位) $parentOU = $OU -replace "^OU=[^,]+,", "" # 检查目标OU是否已存在 if (-not (Get-ADOrganizationalUnit -Filter "Name -eq 'User'" -SearchBase $parentOU -SearchScope OneLevel -ErrorAction SilentlyContinue)) { # 若不存在则创建OU,可根据需求调整ProtectedFromAccidentalDeletion参数(默认true) New-ADOrganizationalUnit -Name "User" -Path $parentOU -ProtectedFromAccidentalDeletion $false Write-Host "已成功创建OU: $OU" } else { Write-Host "OU $OU 已存在,跳过创建步骤" } # 原有的用户批量创建逻辑 $Import = Import-CSV ".\users.csv" -Delimiter ";" $Password = ConvertTo-SecureString "Initpass" -AsPlainText -Force foreach ($user in $Import) { New-ADUser -Name $user.SamAccountName -GivenName $user.GivenName -Surname $user.Surname ` -Path $OU -AccountPassword $Password -ChangePasswordAtLogon $True -Enabled $True ` -UserPrincipalName $user.UserPrincipalName Write-Host "已创建用户: $($user.SamAccountName)" }
关键说明:
- OU存在性检查:通过
Get-ADOrganizationalUnit精准定位父OU下的目标OU,避免递归搜索带来的性能问题;-ErrorAction SilentlyContinue用于抑制OU不存在时的错误提示。 - OU创建参数:
-ProtectedFromAccidentalDeletion设置为$false是为了方便后续管理(若需防止误删可改为$true),可根据实际需求调整。 - 用户创建逻辑:保留原有代码的
-Path $OU参数,确保所有新建用户自动放入预先创建的OU中。
注意事项:
- 运行脚本的账号需具备创建OU和AD用户的权限;
- 确保CSV文件的列名(
SamAccountName、GivenName等)与脚本中引用的字段完全匹配; - 硬编码初始密码存在安全风险,建议改用交互式输入(如
Read-Host -AsSecureString)或从安全存储中读取。
内容的提问来源于stack exchange,提问作者sanjacob
相关产品推荐
相关产品推荐

