跳到主要内容

创建用户: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

留下回复