1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| $csvData = @" Name,DisplayName,Department,Title,Manager li.si,李四,工程部,工程师,zhangsan wang.wu,王五,市场部,市场专员,zhangsan zhao.liu,赵六,财务部,会计,lisi chen.qi,陈七,工程部,初级工程师,zhangsan "@ | ConvertFrom-Csv
function New-BatchADUsers { param( [Parameter(Mandatory)] [object[]]$UserData,
[string]$BaseOU = "OU=员工,DC=contoso,DC=com",
[string]$DefaultPassword = "P@ssw0rd!2025",
[string]$UPNSuffix = "contoso.com" )
$results = @() $successCount = 0 $failCount = 0
$securePassword = ConvertTo-SecureString $DefaultPassword -AsPlainText -Force
foreach ($user in $UserData) { try { $existing = Get-ADUser -Filter { SamAccountName -eq $user.Name } -ErrorAction SilentlyContinue if ($existing) { Write-Host "用户已存在:$($user.Name)" -ForegroundColor Yellow $results += @{ Name = $user.Name; Status = "已存在" } continue }
$newUserParams = @{ Name = $user.DisplayName DisplayName = $user.DisplayName SamAccountName = $user.Name UserPrincipalName = "$($user.Name)@$UPNSuffix" GivenName = ($user.DisplayName -split '')[1] Surname = ($user.DisplayName -split '')[0] Department = $user.Department Title = $user.Title Path = $BaseOU AccountPassword = $securePassword Enabled = $true ChangePasswordAtLogon = $true }
if ($user.Manager) { $newUserParams['Manager'] = $user.Manager }
New-ADUser @newUserParams $successCount++ Write-Host "已创建:$($user.Name)($($user.Department))" -ForegroundColor Green $results += @{ Name = $user.Name; Status = "成功" } } catch { $failCount++ Write-Host "创建失败:$($user.Name) - $($_.Exception.Message)" -ForegroundColor Red $results += @{ Name = $user.Name; Status = "失败:$($_.Exception.Message)" } } }
Write-Host "`n汇总:成功 $successCount,失败 $failCount" -ForegroundColor Cyan return $results }
New-BatchADUsers -UserData $csvData
|