创建用户:test001 – test020
OU路径:OU=git,DC=ad,DC=raisingstar,DC=cn
批量创建AD账号脚本
# 批量创建AD账号脚本 .\batch-aduser.ps1
# 创建用户:test001 - test020
# OU路径:OU=git,DC=ad,DC=raisingstar,DC=cn
# 导入Active Directory模块
Import-Module ActiveDirectory
# 定义参数
$OUPath = "OU=git,DC=ad,DC=raisingstar,DC=cn"
$UserPrefix = "test"
$StartNumber = 1
$EndNumber = 20
$DefaultPassword = "P@ssw0rd123!" # 请根据密码策略修改
$Domain = "ad.raisingstar.cn"
# 将密码转换为安全字符串
$SecurePassword = ConvertTo-SecureString $DefaultPassword -AsPlainText -Force
# 创建日志数组
$Results = @()
# 循环创建用户
for ($i = $StartNumber; $i -le $EndNumber; $i++) {
# 格式化用户名(补零到3位)
$Username = "{0}{1:D3}" -f $UserPrefix, $i
$DisplayName = $Username
$UserPrincipalName = "$Username@$Domain"
try {
# 检查用户是否已存在
$ExistingUser = Get-ADUser -Filter "SamAccountName -eq '$Username'" -ErrorAction SilentlyContinue
if ($ExistingUser) {
Write-Warning "用户 $Username 已存在,跳过创建"
$Results += [PSCustomObject]@{
Username = $Username
Status = "已存在"
Message = "用户已存在于AD中"
}
continue
}
# 创建新用户
New-ADUser `
-Name $Username `
-SamAccountName $Username `
-UserPrincipalName $UserPrincipalName `
-DisplayName $DisplayName `
-GivenName $Username `
-Path $OUPath `
-AccountPassword $SecurePassword `
-Enabled $true `
-ChangePasswordAtLogon $false `
-PasswordNeverExpires $false `
-CannotChangePassword $false
Write-Host "成功创建用户: $Username" -ForegroundColor Green
$Results += [PSCustomObject]@{
Username = $Username
Status = "成功"
Message = "用户创建成功"
}
}
catch {
Write-Host "创建用户 $Username 失败: $($_.Exception.Message)" -ForegroundColor Red
$Results += [PSCustomObject]@{
Username = $Username
Status = "失败"
Message = $_.Exception.Message
}
}
}
# 显示创建结果摘要
Write-Host "`n========== 创建结果摘要 ==========" -ForegroundColor Cyan
$Results | Format-Table -AutoSize
# 统计信息
$SuccessCount = ($Results | Where-Object {$_.Status -eq "成功"}).Count
$FailedCount = ($Results | Where-Object {$_.Status -eq "失败"}).Count
$ExistedCount = ($Results | Where-Object {$_.Status -eq "已存在"}).Count
Write-Host "`n总计: $($Results.Count) 个用户" -ForegroundColor Cyan
Write-Host "成功: $SuccessCount" -ForegroundColor Green
Write-Host "失败: $FailedCount" -ForegroundColor Red
Write-Host "已存在: $ExistedCount" -ForegroundColor Yellow
# 导出结果到CSV(可选)
$LogFile = "AD_User_Creation_Log_$(Get-Date -Format 'yyyyMMdd_HHmmss').csv"
$Results | Export-Csv -Path $LogFile -NoTypeInformation -Encoding UTF8
Write-Host "`n日志已保存到: $LogFile" -ForegroundColor Cyan