
简介这份PDF文档面向Active DirectoryAD管理员与IT运维人员聚焦批量用户管理与日常维护场景帮助解决新员工资料批量导入、账户配置错误修复以及比“用户和计算机”界面更简便的AD管理需求。资源包共1个文件为PDF格式大小约107KB内容围绕11个常用AD管理工具展开重点讲解CSVDE与LDIFDE两个内置命令行工具CSVDE可通过CSV文件导入导出AD对象但无法修改现有对象、也不能设置用户密码LDIFDE则更强大灵活支持创建、修改、删除对象甚至扩展架构并可通过.ldf文件配置密码。文档还提及ADSI Edit、ADUC、PowerShell ActiveDirectory模块等图形化或脚本化管理方式。目前已有70人学习适合需要掌握批量操作与自动化管理思路的AD运维人员参考。1. 从一份 PDF 清单说起AD 管理到底需要哪 11 把“扳手”如果你手里只有一份标题写着“用于管理 AD 的 11 个基本工具.pdf”的文档第一反应大概率是这 11 个工具到底是哪 11 个我该从哪个开始装装完怎么验证它真的在干活Active Directory 的管理工具生态其实非常稳定微软自己就提供了一整套原生工具链第三方和开源社区再补上监控、审计、批量操作这几块拼图。这份清单类的 PDF 通常不会告诉你的是工具本身不值钱值钱的是“什么场景下用哪把扳手、参数怎么调、权限怎么给”。这篇笔记就按“先立住选型逻辑再逐个跑通最小验证”的节奏把 AD 管理这件事拆成能照着复现的步骤。适合已经有一台域控或准备搭域控、需要把日常运维从“手动点 ADUC”升级成“可重复、可审计”的工程师。2. 先分清 AD 管理的四类活工具选型不踩空2.1 把 11 个工具按“读、写、批量、审计”归位AD 管理工具再多落到操作层面只有四类动作。第一类是读查对象、查属性、查复制状态、查 FSMO 角色归属代表工具是 ADUCActive Directory 用户和计算机、ADACActive Directory 管理中心、dsquery/dsget命令行。第二类是写建用户、改属性、移 OU、重置密码代表工具是 ADUC、PowerShell 的New-ADUser/Set-ADUser、dsadd/dsmod。第三类是批量几百个用户导入、批量改部门、批量禁用离职账号代表工具是 PowerShell 脚本、csvde/ldifde、第三方批量工具。第四类是审计与监控谁改了哪个对象、复制有没有报错、域控性能如何代表工具是事件查看器、Repadmin、Dcdiag、SCOM 或开源监控。把这四类想清楚再看那份 PDF 里的 11 个工具你会发现它们基本都能塞进这四个格子。选型的第一原则不是“哪个功能多”而是“这个活是读还是写、是一次性还是周期性、要不要留痕”。读类工具优先用原生命令行因为输出可管道、可脚本化写类工具优先用 PowerShell因为可回滚、可加-WhatIf批量类必须先在测试 OU 跑一遍审计类要保证日志留存周期覆盖你的合规要求。2.2 原生工具链的最小可用组合如果你不想一上来就装一堆第三方软件微软原生工具链已经能覆盖 80% 的日常管理。最小可用组合是ADUC 做图形化日常操作ADAC 做跨域和高级属性编辑PowerShell 的 ActiveDirectory 模块做批量Repadmin 做复制排查Dcdiag 做健康检查事件查看器做审计。这六个工具装完你就能完成从建号到排障的完整闭环。安装方式上Windows Server 上通过“添加角色和功能”勾选“AD DS 和 AD LDS 工具”即可Windows 10/11 客户端需要装 RSAT远程服务器管理工具。RSAT 的安装命令按系统版本不同常见做法是用 PowerShell 的Add-WindowsCapability按名称匹配。装完后验证是否可用最直接的是打开 PowerShell 跑Get-Module -ListAvailable ActiveDirectory能看到模块版本就说明就位。提示RSAT 装完后如果Import-Module ActiveDirectory报错先确认当前账号对域有读取权限再确认 DNS 指向的是域控而不是公网 DNS。2.3 第三方与开源工具补的是哪块短板原生工具链的短板有三个一是跨域批量操作时 PowerShell 脚本写起来啰嗦二是审计报表不够直观事件日志翻起来费劲三是密码管理和自助重置这类面向终端用户的功能缺失。第三方工具通常补的就是这三块。常见做法是批量导入导出用csvde/ldifde或 PowerShell 封装审计报表用事件转发加日志分析密码自助用微软的 SSPR 或第三方套件。这里要提醒一句第三方工具只要涉及“写 AD”就必须确认它用的是 LDAP over SSL636 端口还是普通 389前者才保证密码传输安全。很多工具默认走 389在跨网段场景下会直接翻车。选型时先问一句“它连的是哪个端口”比看功能列表有用得多。3. 用 PowerShell 跑通 AD 批量管理的最小闭环3.1 环境准备与模块导入批量管理 AD 最稳的路径是 PowerShell ActiveDirectory 模块。先确认执行策略和模块可用性再导入模块。下面这段是每次开新会话都建议跑一遍的检查脚本# 检查 ActiveDirectory 模块是否可用 Get-Module -ListAvailable ActiveDirectory | Select-Object Name, Version # 导入模块如果上面能看到这步一般不会报错 Import-Module ActiveDirectory # 确认当前域和域控连接 Get-ADDomain | Select-Object DNSRoot, DomainMode Get-ADDomainController -Filter * | Select-Object Name, Site, IPv4Address逻辑说明第一行确认模块存在第二行导入第三行确认你连的是哪个域、有哪些域控。参数上Get-ADDomain不带参数默认取当前登录域Get-ADDomainController -Filter *会列出所有域控如果只想看某个站点加-Site 站点名。这一步跑通说明你的客户端到域控的 LDAP 通道是通的。3.2 批量建用户从 CSV 到 AD 的完整脚本批量建用户是最高频的活。假设你有一个users.csv字段是Name,SamAccountName,OU,Password下面这个脚本能直接跑# 读取 CSV 并批量创建用户 $users Import-Csv -Path C:\ad\users.csv -Encoding UTF8 foreach ($u in $users) { $securePwd ConvertTo-SecureString $u.Password -AsPlainText -Force try { New-ADUser -Name $u.Name -SamAccountName $u.SamAccountName -Path $u.OU -AccountPassword $securePwd -Enabled $true -ChangePasswordAtLogon $true -ErrorAction Stop Write-Host 创建成功: $($u.SamAccountName) -ForegroundColor Green } catch { Write-Host 创建失败: $($u.SamAccountName) - $($_.Exception.Message) -ForegroundColor Red } }逻辑说明Import-Csv读入 CSVConvertTo-SecureString把明文密码转成安全字符串New-ADUser执行创建。关键参数-Path是目标 OU 的 DN格式必须是OU部门,DCexample,DCcom-ChangePasswordAtLogon $true强制首次登录改密-ErrorAction Stop让异常进入 catch避免一个失败后面全断。跑之前建议先加-WhatIf空跑一遍确认 OU 路径和字段映射没错。注意CSV 里如果 OU 字段写的是显示名而不是 DNNew-ADUser会直接报错。DN 必须从域根往下写全中间用逗号分隔不能有空格。3.3 批量改属性与禁用账号离职账号处理是另一个高频场景。下面这段先按部门筛选再批量禁用并移到“离职”OU# 批量禁用指定部门的账号并移动到离职 OU $targetOU OU离职,DCexample,DCcom $sourceOU OU销售部,DCexample,DCcom Get-ADUser -SearchBase $sourceOU -Filter * -Properties Department | ForEach-Object { Disable-ADAccount -Identity $_.SamAccountName Move-ADObject -Identity $_.DistinguishedName -TargetPath $targetOU Write-Host 已处理: $($_.SamAccountName) }逻辑说明Get-ADUser -SearchBase限定搜索范围-Filter *取全部-Properties Department把部门属性带出来。Disable-ADAccount禁用Move-ADObject移动。参数上-SearchBase写 OU 的 DN-TargetPath写目标 OU 的 DN。如果只想处理特定部门把-Filter *换成-Filter {Department -eq 销售}。跑之前先用-WhatIf确认影响范围。3.4 用 Repadmin 和 Dcdiag 做复制与健康检查批量操作之后必须确认复制正常否则你在 A 域控改的东西 B 域控看不到。Repadmin 和 Dcdiag 是原生命令行里最直接的两个# 查看复制摘要 repadmin /replsummary # 查看具体复制伙伴和状态 repadmin /showrepl # 域控健康检查 dcdiag /test:replications dcdiag /test:netlogons逻辑说明/replsummary给出整体复制延迟和失败数/showrepl列出每个域控的复制伙伴和上次成功时间。dcdiag /test:replications专门测复制/test:netlogons测网络登录权限。参数上如果只想看某个域控在命令后加/s:域控名。常见失败原因是 DNS 解析不对或防火墙挡了 RPC 端口先查 DNS 再查端口。4. 图形化工具与命令行怎么配合ADUC、ADAC 和 dsquery 的边界4.1 ADUC 适合做什么、不适合做什么ADUC 是大多数人第一个接触的 AD 工具建用户、改属性、拖 OU 都很直观。但它有三个明显边界一是批量操作弱几百个用户靠点不现实二是跨域操作要反复切换连接三是高级属性比如altSecurityIdentities藏在“属性编辑器”里容易点错。我一般把 ADUC 定位成“单对象精细操作”和“快速查看”批量活全部交给 PowerShell。ADUC 里有一个容易被忽略的功能保存的查询。你可以把常用的筛选条件比如“30 天未登录的账号”存成查询下次直接点。这个功能在排查僵尸账号时比写脚本快。操作路径是右键“保存的查询”→“新建”→“查询”然后按需设条件。4.2 ADAC 的跨域和高级属性编辑ADAC 是 ADUC 的升级版界面更现代最大的优势是跨域管理和高级属性编辑更顺手。比如你要改一个用户的msDS-AllowedToDelegateTo在 ADUC 里要翻属性编辑器在 ADAC 里直接有对应字段。ADAC 还支持“动态访问控制”和“细粒度密码策略”的可视化配置这些在纯命令行里写起来很啰嗦。但 ADAC 也有坑它的搜索默认走全局编录GC如果你的环境里 GC 没配好搜索会返回不完整结果。排查方法是换用 ADUC 搜同一个对象如果 ADUC 能搜到而 ADAC 搜不到基本就是 GC 的问题。解决方式是确认 GC 角色正常或者临时把 ADAC 的搜索范围限定到具体域。4.3 dsquery/dsget 在脚本里的定位dsquery和dsget是老一代命令行工具现在基本被 PowerShell 取代但在某些场景下还有用一是老脚本兼容二是dsquery的输出格式直接可以管道给dsmod/dsrm。比如批量删除 30 天未登录的计算机账号# 查找 30 天未登录的计算机并删除 dsquery computer -inactive 30 | dsrm -noprompt逻辑说明dsquery computer -inactive 30找出 30 天未登录的计算机管道给dsrm删除。-noprompt跳过确认。这个命令很危险跑之前一定先用dsquery computer -inactive 30单独看一遍输出。参数上-inactive的周数按 7 天算30 天要写-inactive 4左右具体看版本行为建议先小范围测。提示dsquery系列工具在较新系统上默认不装需要从 RSAT 里单独勾选“AD DS 工具”才有。5. 避坑与排查AD 管理工具最容易翻车的 5 个点5.1 现象PowerShell 建用户报“服务器不可操作”原因目标 OU 的 DN 写错或者当前账号对该 OU 没有写入权限。解决先用Get-ADOrganizationalUnit -Filter * | Select DistinguishedName确认 DN再用dsacls查权限。DN 里如果有特殊字符比如逗号、加号需要转义。5.2 现象批量脚本跑一半断了后面全没执行原因没加-ErrorAction Stop或者某个对象已存在导致New-ADUser报错后脚本继续但后续逻辑依赖前一步结果。解决每个操作包 try/catch失败记录到日志文件跑完看日志补漏。不要指望一次跑完分批跑更稳。5.3 现象ADAC 搜不到刚建的用户原因ADAC 默认走全局编录GC 复制有延迟或者 GC 没覆盖到该分区。解决等几分钟再搜或者改用 ADUC 直连具体域控搜。如果长期搜不到检查 GC 角色和复制状态。5.4 现象Repadmin 显示复制失败但网络是通的原因常见的是 DNS 解析不对域控互相解析到错误 IP或 RPC 动态端口被防火墙挡。解决先nslookup确认域控 A 记录再确认防火墙放行 RPC 动态端口范围默认 49152-65535。如果用了固定端口确认注册表配置一致。5.5 现象批量禁用账号后用户还能登录原因禁用的是 AD 账号但用户可能通过缓存凭据登录了已加入域的机器或者有本地账号。解决禁用后配合Invoke-Command远程清缓存或者用组策略刷新。另外确认禁用的是正确账号别把服务账号误禁了。6. 把 11 个工具串成日常巡检脚本一个可复用的收尾技巧工具清单看完容易忘真正有用的是把它们串成一个每天跑的巡检脚本。我自己的习惯是写一个Invoke-ADDailyCheck.ps1里面按顺序做五件事检查复制状态、检查 FSMO 角色归属、统计 30 天未登录账号、检查密码即将过期的账号、导出当天的事件日志摘要。下面是一个骨架# AD 日常巡检骨架 $report [ordered]{} # 1. 复制摘要 $report[ReplSummary] repadmin /replsummary | Out-String # 2. FSMO 角色 $report[FSMO] netdom query fsmo | Out-String # 3. 30 天未登录账号 $inactive Get-ADUser -Filter {LastLogonDate -lt (Get-Date).AddDays(-30)} -Properties LastLogonDate | Select-Object SamAccountName, LastLogonDate $report[InactiveUsers] $inactive # 4. 密码即将过期7 天内 $expiring Get-ADUser -Filter {PasswordLastSet -lt (Get-Date).AddDays(-83)} -Properties PasswordLastSet | Select-Object SamAccountName, PasswordLastSet $report[ExpiringPwd] $expiring # 5. 导出报告 $report | ConvertTo-Json -Depth 3 | Out-File C:\ad\daily_$(Get-Date -Format yyyyMMdd).json逻辑说明$report用有序哈希表收集结果最后转 JSON 落盘。参数上LastLogonDate和PasswordLastSet是 AD 里两个容易混淆的属性前者是最后登录时间后者是最后改密时间。密码过期判断用PasswordLastSet加默认 90 天策略反推如果你的域策略不是 90 天把-83改成对应天数。这个脚本跑一周你就能看出哪些账号是僵尸、哪些密码快到期比翻事件日志快得多。我自己的血泪经验是巡检脚本一定要输出到文件不要只打印在控制台。控制台一关什么都没了文件留着还能对比昨天和今天的变化。另外脚本里所有涉及“写”的操作第一次跑都加-WhatIf确认无误再去掉。AD 管理这件事后悔药很少提前空跑一遍就是最好的保险。希望帮到你。本文还有配套的精品资源点击获取