PowerShell AD域用户批量管理脚本

代码脚本 · 部署发布

批量创建、禁用、导出AD域用户,支持从CSV导入用户信息,企业IT运维必备。

详细内容

# PowerShell AD域用户批量管理脚本 # 需要在域控制器或安装RSAT工具的机器上运行 # 使用方法: 以管理员身份运行PowerShell # 检查AD模块 if (-not (Get-Module -Name ActiveDirectory -ListAvailable)) { Write-Host "❌ 未安装ActiveDirectory模块" -ForegroundColor Red Write-Host "请安装RSAT工具: Install-WindowsFeature RSAT-AD-PowerShell" -ForegroundColor Yellow exit 1 } Import-Module ActiveDirectory # ========== 配置区 ========== $DEFAULT_OU = "OU=Users,DC=example,DC=com" # 默认OU $DEFAULT_DOMAIN = "example.com" # ============================ function New-BatchUsers { <# 从CSV批量创建用户 #> param([string]$CsvPath = "users.csv") if (-not (Test-Path $CsvPath)) { Write-Host "CSV文件不存在: $CsvPath" -ForegroundColor Red return } $users = Import-Csv $CsvPath Write-Host "从CSV读取到 $($users.Count) 个用户" -ForegroundColor Cyan foreach ($user in $users) { $username = $user.Username $displayName = $user.DisplayName $password = ConvertTo-SecureString $user.Password -AsPlainText -Force $ou = if ($user.OU) { $user.OU } else { $DEFAULT_OU } try { New-ADUser -Name $displayName `\n -SamAccountName $username `\n -UserPrincipalName "$username@$DEFAULT_DOMAIN" `\n -DisplayName $displayName `\n -GivenName $user.FirstName `\n -Surname $user.LastName `\n -EmailAddress $user.Email `\n -Path $ou `\n -AccountPassword $password `\n -Enabled $true `\n -ChangePasswordAtLogon $true Write-Host "✅ 创建用户: $username ($displayName)" -ForegroundColor Green # 添加到组 if ($user.Group) { Add-ADGroupMember -Identity $user.Group -Members $username Write-Host " 已添加到组: $($user.Group)" } } catch { Write-Host "❌ 创建失败 $username : $_" -ForegroundColor Red } } } function Disable-InactiveUsers { <# 禁用N天未登录的用户 #> param([int]$Days = 90) $cutoffDate = (Get-Date).AddDays(-$Days) Write-Host "查找 ${Days} 天未登录的用户..." -ForegroundColor Cyan $inactiveUsers = Get-ADUser -Filter * -Properties LastLogonDate | Where-Object { $_.LastLogonDate -lt $cutoffDate -and $_.Enabled -eq $true } Write-Host "找到 $($inactiveUsers.Count) 个不活跃用户" foreach ($user in $inactiveUsers) { Write-Host " 禁用: $($user.SamAccountName) (最后登录: $($user.LastLogonDate))" Disable-ADAccount -Identity $user.SamAccountName } Write-Host "完成,共禁用 $($inactiveUsers.Count) 个用户" -ForegroundColor Green } function Export-UsersToCsv { <# 导出所有用户信息 #> param([string]$OutputPath = "AD_users_$(Get-Date -Format 'yyyyMMdd').csv") Write-Host "正在导出用户信息..." -ForegroundColor Cyan Get-ADUser -Filter * -Properties EmailAddress, LastLogonDate, Created, Department, Title | \ Select-Object SamAccountName, DisplayName, EmailAddress, Department, Title, LastLogonDate, Created, Enabled | \ Export-Csv -Path $OutputPath -NoTypeInformation -Encoding UTF8 Write-Host "✅ 已导出到: $OutputPath" -ForegroundColor Green } # CSV模板示例 function Show-CsvTemplate { Write-Host "" Write-Host "CSV文件格式示例 (users.csv):" -ForegroundColor Yellow Write-Host 'Username,DisplayName,FirstName,LastName,Email,Password,OU,Group' Write-Host 'zhangsan,张三,张,三,zhangsan@example.com,P@ssw0rd,OU=技术部,DC=example,DC=com,技术组' Write-Host 'lisi,李四,李,四,lisi@example.com,P@ssw0rd,OU=市场部,DC=example,DC=com,市场组' Write-Host "" } # 菜单 Write-Host "========================================" -ForegroundColor Cyan Write-Host " AD域用户批量管理工具" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "1. 从CSV批量创建用户" Write-Host "2. 禁用不活跃用户(90天)" Write-Host "3. 导出所有用户到CSV" Write-Host "4. 显示CSV模板" Write-Host "0. 退出" Write-Host "========================================" $choice = Read-Host "请选择操作" switch ($choice) { "1" { $csv = Read-Host "CSV文件路径"; New-BatchUsers -CsvPath $csv } "2" { $days = Read-Host "不活跃天数(默认90)"; Disable-InactiveUsers -Days ($days -as [int]) } "3" { Export-UsersToCsv } "4" { Show-CsvTemplate } default { Write-Host "退出" } }
PowerShellAD域用户管理批量企业运维

更多部署发布