Windows AD Practice Day3
这是 Windows AD 每日训练的第三天。先用答题纸完成 13 道题,随后继续闭卷对话练习,并在 VM 中处理了三次真实故障。重复题按知识点合并;原始回答、订正过程和下一次出题依据都保留在这里。
Q1~Q13 是答题纸的批改,不是重新执行命令得到的结果。后面的闭卷追练来自对话;最后三题是在
CORE01、CORE02、USER01组成的实验环境中实际设置、排查并恢复的故障。其他情境题的名称仅作示例。
Day 3:基础命令与排障思路
今天的总体评价
答题纸的 13 题中,6 题答得完整,7 题方向正确但需补关键细节。后续闭卷追练里,多数常用命令已经能独立写出;实机排障也能先分层、再定位。主要弱点不是完全想不到从哪里开始,而是偶尔把相近的属性、命令或认证阶段混在一起。
| 范围 | 表现 | 最该记住的纠正 |
|---|---|---|
| 用户、计算机和组查询 | 基础命令较稳 | 组类型查 GroupCategory,不是 ObjectClass |
| DC、FSMO 与 DCDiag | 命令基本掌握 | IsGlobalCatalog=False 不等于“作用域仅限本域”;退役需写明 transfer |
| SPN 与时间 | 表现较稳 | setspn -X 默认范围与加 -F 查全林不同 |
| 共享权限 | 知道要分层 | Kerberos 票据与当前登录访问令牌不能混称为“凭据” |
| RPC 1722 | 已有排查框架 | 测 TCP 135 用 Test-NetConnection -Port 135;Ping 不是端口测试 |
| 跨站点复制 | 风险判断正确 | 先定位对象、目标 DC 和分区,再考虑最小范围的复制 |
本日重点复习:Q3、Q5、Q10、Q12、Q13,以及后文的
lastLogon、DNS 服务器配置、Remove-Computer。 Q6、Q8 属于“命令会写,但解释还差半步”。
Q1:已禁用的用户
**题目:**写一条命令,找出域中已禁用的用户,只显示 Name、SamAccountName、DistinguishedName。
我的回答:
Get-ADUser -Filter 'Enabled -eq $false' | Select-Object Name, SamAccountName, DistinguishedName批改:正确。 Enabled 拼写、筛选条件与输出字段都准确。这里用 -Filter 找对象,用 Select-Object 限制显示列。
Q2:已启用的 IT 用户
**题目:**找出 Department 为 IT 且已启用的用户,只显示 Name、SamAccountName、Department。注意:既要筛选,也要让部门字段出现在输出中。
我的回答:
Get-ADUser -Filter 'Enabled -eq $true -and Department -eq "it"' ` -Properties Department | Select-Object Name, SamAccountName, Department批改:正确。 这次没有忘记 -Properties Department。Department 用于服务器端筛选,不代表 AD 模块就会自动把它作为默认输出属性返回;筛选和取值是两步。此处 it 与 IT 的大小写通常不影响 AD 筛选结果。
Q3:组对象、组成员和用户所属组
**题目:**分别写出命令:
- 查询
QYNET-Admin组对象的类型和作用域。 - 递归查询
QYNET-Admin的成员。 - 查询
qianyue属于哪些组。
我的回答:
Get-ADGroup QYNET-Admin | Select-Object ObjectClass, GroupScopeGet-ADGroupMember -Identity 'QYNET-Admin' -RecursiveGet-ADPrincipalGroupMembership -Identity 'qianyue'批改:后两条正确;第一条查错了一个字段。 ObjectClass 告诉你对象类别是 group,不能判断这是安全组还是通讯组。题目要的“类型和作用域”分别是 GroupCategory 与 GroupScope:
Get-ADGroup -Identity 'QYNET-Admin' | Select-Object Name, GroupCategory, GroupScope| 属性 | 问题 | 常见值 |
|---|---|---|
ObjectClass | 这是什么 AD 对象? | group |
GroupCategory | 能用于安全授权吗? | Security、Distribution |
GroupScope | 组的成员和授权范围是什么? | Global、DomainLocal、Universal |
重点复习:组“类别”是
GroupCategory;组“作用域”是GroupScope。
Q4:已禁用的计算机账户
**题目:**找出已禁用的计算机账户,只显示 Name、DNSHostName、DistinguishedName。另外回答:计算机账户的 SamAccountName 通常以什么符号结尾?
我的回答:
Get-ADComputer -Filter 'Enabled -eq $false' | Select-Object Name, DNSHostName, DistinguishedName并回答计算机账户的 SamAccountName 通常以 $ 结尾。
批改:正确。 这次 Enabled 没再误写成 Enable。
Q5:DC 与全局编录(GC)
题目:列出所有 DC,只显示 Name、Site、IsGlobalCatalog。如果其中一台显示 IsGlobalCatalog=False,能否仅凭这一点判定它故障?
我的回答:
Get-ADDomainController -Filter * | Select-Object Name, Site, IsGlobalCatalog对于 IsGlobalCatalog=False,回答“不是故障,它只是作用域仅限于本域”。
批改:命令正确,结论前半句正确,后半句不准确。 False 只表示这台 DC 没启用 GC。普通 DC 仍保存并服务其所在域的完整目录分区;GC 则还保存林中其他域的部分属性副本,支持全林搜索等用途。不能把 GC 标记直接理解成 AD 组的 GroupScope,也不能仅凭它判断故障。多域林还要考虑通用组成员关系查询与其他 GC 的可用性。
重点复习:
IsGlobalCatalog是 DC 的服务角色状态,不是“组的作用域”。
Q6:五个 FSMO 角色
**题目:**不使用 netdom,分别用 PowerShell 查询林级两个、域级三个 FSMO 角色的持有者。写出两条命令;然后简述在线 DC 正常退役时应选择 transfer 还是 seize。
我的回答:
Get-ADForest | Select-Object SchemaMaster, DomainNamingMasterGet-ADDomain | Select-Object PDCEmulator, RIDMaster, InfrastructureMaster批改:两条查询命令都正确;漏答退役方式。 原持有者在线且可正常交接时,用 transfer,不是 seize。先确认目标 DC 健康与复制正常,再转移角色、核验持有者、正常降级旧 DC。seize 是原持有者确实无法恢复时的强制接管手段。
Q7:复制摘要与详情
**题目:**分别写出命令:
- 查看复制摘要,但只显示错误。
- 查看
QYNET-CORE02的复制伙伴与各分区详情。
我的回答:
repadmin /replsummary /errorsonlyrepadmin /showrepl QYNET-CORE02批改:正确。 第一条看失败摘要,第二条看指定 DC 的复制伙伴与分区详情;需要更细的信息可以加 /verbose。
Q8:DCDiag 先连通、后 DNS
**题目:**先检查 DC 连通性,再单独检查 DNS。写出两条 dcdiag 命令,并用一句话说明为什么按这个顺序。
我的回答:
dcdiag /test:Connectivitydcdiag /test:dns解释为“先判断服务器挂了还是域名解析挂了”。
批改:命令和大体顺序正确,解释需要收紧。 Connectivity 本身也会涉及 DNS 中的 DC 定位,以及 LDAP/RPC 可达性;它不是纯 Ping,更不能凭单次失败断定服务器已经关机。随后用 /test:DNS 做更细的 DNS 检查,结合错误信息定位具体环节。
Q9:SPN 反查、查重与安全添加
**题目:**针对 HTTP/testweb.qy.net,分别写出命令:
- 反查它属于哪个账户。
- 检查重复 SPN。
- 确认没有重复后,安全地添加到
svc_testweb。
最后说明为什么不优先使用 setspn -A。
我的回答:
setspn -Q HTTP/testweb.qy.netsetspn -Xsetspn -S HTTP/testweb.qy.net svc_testweb解释 -S 会检查重复,-A 不会先查重。
批改:题目范围内正确。 如果排查对象横跨整个林,应明确查询范围,例如:
setspn -F -Q HTTP/testweb.qy.netsetspn -X -F安全添加前还应核实 svc_testweb 确实是服务实际运行的账户。-S 的查重能力不能替代核对服务身份;SPN 绑错账户仍可能造成 Kerberos 认证异常。
Q10:刚加入组却仍无法访问共享
题目:qianyue 刚加入一个安全组,但访问 \\QYNET-FS01\Public 仍提示“拒绝访问”。请从 AD 成员关系、当前登录会话、共享权限、NTFS ACL 四层写出检查思路。klist purge 与注销重登分别能解决什么,不能解决什么?
我的回答:
AD 成员关系:加入的组的身份是否是 Security 还是其他?
当前登录会话:用户凭据是否已经正常更新,查当前登录令牌。
共享权限:此文件夹的共享权限是否正常给这个安全组启用了。
NTFS ACL:共享权限给了,也要检查 ACL 权限有没有正常给予这个安全组。
klist purge:能解决 Kerberos 凭据的立刻更新,但是用户凭据是无法更新的,必须注销重登。
批改:四层都想到了,概念用词仍需纠正。
- 在 AD 中确认新组成员关系,并检查组的
GroupCategory与嵌套关系。 - 在用户当前电脑、当前登录会话执行
whoami /groups;新组不在令牌中时,让用户注销并重新登录。 - 在文件服务器查询
Get-SmbShareAccess,确认共享权限。 - 再查共享对应本地目录的
Get-Acl,确认 NTFS ACL;两层权限都要核对,还要注意显式拒绝项。
# 在用户当前登录会话中:看访问令牌whoami /groups
# 在文件服务器上:看共享权限Get-SmbShareAccess -Name 'Public'
# 在文件服务器上:将路径换成共享实际对应的本地目录Get-Acl 'D:\Shares\Public' | Select-Object -ExpandProperty Accessklist purge 清除当前会话缓存的 Kerberos 票据,有助于在相关配置修复后重新申请票据;它不会重建当前桌面登录会话的访问令牌,也不保证现有 SMB 连接自动更新。这里不是“用户凭据需要同步”,而是登录时生成的令牌可能仍缺少新组 SID。注销重登是更可靠的验证方式。
Q11:时间偏差与 Kerberos
**题目:**一台成员机比 DC 快 12 分钟,域账户登录失败。请写出查看时间源与同步状态的两条命令,并解释最可能受影响的认证机制。若林根域 PDC 显示 Local CMOS Clock,正式环境通常应该如何设计它的上游时间源?
我的回答:
w32tm /query /sourcew32tm /query /status判断 Kerberos 受影响最大,林根域 PDC 在正式环境应使用权威 NTP 上游。
批改:正确。 成员机比 DC 快 12 分钟,超过常见的默认 Kerberos 允许时间偏差;这里先排查时钟,不等于密码错误。具体允许偏差仍可能被策略调整。林根域 PDC 应按组织设计对接可靠的权威时间源,其他域成员遵循域时间层次。
Q12:复制错误 1722
题目:repadmin /showrepl QYNET-CORE02 报 1722。写出你会依次检查的三到四件事。为什么“Ping 通了”仍然不能排除 RPC 问题?
我的回答:
前两件事是检查连通性(Ping)与 DNS 解析(
Resolve-DnsName)。而后检查防火墙针对 RPC 的端口是否正常放行(
Test-Connection)。而后检查 RPC 关键服务是否启用(RPC、NetLogon、DNS、NTDS)。
Ping 通了也只是服务器连接是正常的,并不意味着 RPC 就没有问题了。还要检查相关服务是否启用。
批改:排查方向对,工具选错了。 Windows PowerShell 中 Test-Connection 是 ICMP 测试,不能用它判断 TCP 135 是否开放;应使用:
Resolve-DnsName QYNET-CORE02.qy.netTest-Connection QYNET-CORE02 -Count 2Test-NetConnection QYNET-CORE02 -Port 135repadmin /showrepl QYNET-CORE02 /verbose检查顺序可记为:DNS/网络路径 → TCP 135 Endpoint Mapper → RPC 动态端口与防火墙 → 服务与事件日志 → 修复后复测。 TCP 135 通了也不代表后续协商的动态端口畅通;Ping 通只表明 ICMP 在当时成功,不能证明 RPC 链路或 AD 复制工作正常。
重点复习:
Test-Connection测 ICMP;Test-NetConnection -Port 135测 TCP 135。
Q13:跨站点复制不能直接全推
**题目:**DC01 新建用户后,DC02 暂时查不到;repadmin /replsummary 没有失败。两个 DC 分属不同站点,站点间链路带宽有限。
你会立刻执行 repadmin /syncall /AdeP 吗?请说明理由、先核对哪些信息;如果业务确实急需同步,应如何尽量缩小操作范围?写不出具体命令也可以先写判断过程。
我的回答:
不会,因为如果是多链路服务器的话会使得链路流量暴增,可能会造成拥堵。
如果业务确实需要急需同步,建议在需要被同步的机器上进行手动拉取,而不是直接全局 Push 推送。
批改:核心判断正确,但还缺少定位步骤和具体范围。 repadmin /replsummary 没报错不等于刚创建的对象已经在每台 DC 上可见。先用 -Server 明确在哪台 DC 查询、确认用户在源 DC 上已存在,并核对目标 DC 的复制伙伴、站点计划与要复制的分区。业务急需时,再评估只复制所需的分区与 DC 对。
$newUserSam = 'newuser' # 换成刚创建的用户登录名
Get-ADUser -Identity $newUserSam -Server DC01Get-ADUser -Identity $newUserSam -Server DC02
repadmin /showrepl DC02
# 确认方向、分区和站点链路后才执行:目标在前,源在后repadmin /replicate DC02 DC01 'DC=qy,DC=net'/syncall /AdeP 涉及所有命名上下文、跨站点和推送方向,可能在短时间显著增加链路流量,但不是“必然压满”。它不是日常用来“刷新一下”的命令。急迫程度会影响变更优先级,却不会替代范围判断。
闭卷追练:重复题合并记录
以下按知识点合并多轮重复题;“掌握度”只描述今天的表现,供后续出题参考。
| 题目 | 我的解法 | 正确思路与答案 | 掌握度 |
|---|---|---|---|
| 查已启用用户、只显示两列 | 一次写出 Get-ADUser -Filter 'Enabled -eq $true' | Select-Object Name,SamAccountName。 | 正确;这两列是默认属性,无需 -Properties。 | 稳定 |
| 查已禁用计算机 | 首答把 Enabled 写成 Enable;提醒后完整改对。 | Get-ADComputer -Filter 'Enabled -eq $false' | Select-Object Name,DNSHostName,DistinguishedName。 | 会用,拼写需复测 |
| 查组成员与用户所属组 | Get-ADGroupMember -Identity 'QYNET-Admin' -Recursive、Get-ADPrincipalGroupMembership qianyue 均能独立写对。 | 前者从组查成员并展开嵌套,后者从用户查所属组。 | 稳定 |
| 查组类型与作用域 | Get-ADGroup 和 GroupScope,GroupCategory 答对,但漏了题目要求显示的 Name。 | Get-ADGroup -Identity 'QYNET-Admin' | Select-Object Name,GroupScope,GroupCategory。 | 会用,审题需注意 |
| 查额外用户属性 | 首答只加 -Properties Department,却也选择 LastLogonDate;提醒后补齐。 | Get-ADUser -Identity qianyue -Properties Department,LastLogonDate | Select-Object Name,Department,LastLogonDate。Select-Object 不会补查属性。 | 经提醒能改正 |
| 查已启用的 IT 用户 | 一次写出 -Filter 'Department -eq "IT" -and Enabled -eq $true' -Properties Department。 | -Filter 选对象、-Properties 取额外字段、Select-Object 控制显示列。 | 稳定 |
| FSMO、复制与 DCDiag | Get-ADForest / Get-ADDomain 的分工、transfer、PDC、RID、repadmin /replsummary /errorsonly、repadmin /showrepl DC01、dcdiag /test:Connectivity 均答对;五个属性名因节省时间未完整写。 | 林级 SchemaMaster,DomainNamingMaster;域级 PDCEmulator,RIDMaster,InfrastructureMaster。/showrepl 深挖指定 DC 的入站复制,/replsummary 看摘要。 | 概念稳定,属性名待复测 |
| 事件日志 | 4740 的 Get-WinEvent 命令、Caller Computer Name、4771 的 0x25、4776 的 Status=0x0 均答对。 | 4740 不证明本人输错;4771 的 0x25 优先查时钟;4776 的 0x0 是验证成功。 | 稳定 |
| SPN | setspn -Q -F、setspn -X -F、setspn -S 均答对。 | -Q 反查,-X 查重复,-F 查全林,-S 安全添加。 | 稳定 |
| 组授权 | 知道用户先入 Global;回答授权组时只说“Domain”,漏了 Local;知道 Distribution 不能授予 ACL。 | 用户 → Global → DomainLocal → 资源 ACL;能授权的是 Security 组。 | 会用,术语需复测 |
| 凭据、票据与令牌 | 知道 klist purge 不一定更新新入组后的令牌,但曾把 whoami、klist 拼错。 | whoami /groups 看当前登录令牌,klist 看票据;令牌缺新组通常注销重登,还需查共享与 NTFS ACL。 | 概念较稳,拼写需复测 |
| AD 对象删除与退域 | 知道一个删 AD 对象、一个让设备退域,却把两条命令对应反了;提醒后改正。 | Remove-ADComputer 删除目录对象;Remove-Computer 才让 Windows 设备退出域。 | 待巩固 |
重点订正:最后登录时间
题目:LastLogonDate 能否筛 90 天未登录的计算机?如果要尽量准确地查最后登录时间,应该查哪个属性、查几台 DC?
**我的解法:**正确回答它适合粗筛、不能判断“今天是否登录”;随后误把精确值说成 lastLogonTimestamp,还以为应重点看 PDC 的事件日志。
正确思路与答案:LastLogonDate 基于更新不实时的 lastLogonTimestamp,适合长期不活跃粗筛。较精确的时间要逐台查各 DC 上不复制的 lastLogon,取最大值;PDC 没有代表所有 DC 的特权。
记忆:粗筛
LastLogonDate;较精确地查每台 DC 的lastLogon并取最大值。
重点订正:DNS 配置与域控定位
**题目:**加域提示找不到 qy.net,怎样分别检查客户端配置的 DNS 服务器与域控的 LDAP SRV 记录?
**我的解法:**最初不会写 SRV 查询,学习后写出了 nslookup -type=SRV _ldap._tcp.qy.net;但把 Resolve-DnsName qy.net 当成查看客户端 DNS 服务器配置的命令。
正确思路与答案:
# 查看本机配置的 DNS 服务器Get-DnsClientServerAddress -AddressFamily IPv4
# 查 LDAP 服务定位记录nslookup -type=SRV _ldap._tcp.qy.net
# 更明确地检查 DC Locator 记录nslookup -type=SRV _ldap._tcp.dc._msdcs.qy.netResolve-DnsName qy.net 是测试解析结果,不能代替第一条。实际命令里的下划线不需要 Markdown 转义用的反斜杠。
重点订正:Kerberos 的三个概念
**题目:**已有 TGT,访问 HTTP/testweb.qy.net 时用什么标识目标服务、申请哪种票据?新入组后只清票据是否足够?
**我的解法:**记得申请服务票据 ST,却忘了服务标识是 SPN;后来能正确回答 klist 查票据,且 klist purge 不能保证 whoami /groups 看到新组。时间偏差题中也曾把 SPN 顺手带进去。
正确思路与答案:用 SPN 指明服务,以 TGT 向 KDC 的 TGS 申请对应的服务票据 ST。票据用于认证,服务端还要判断权限;当前会话的访问令牌缺新组时,通常需要注销重登。时间偏差与 SPN 配错是两类问题,不能混为一谈。
重点订正:从事件 ID 走到根因
**题目:**怎样查最近 20 条账户锁定事件?4740 能否证明用户本人输错密码?4776 的 Status=0x0 呢?
**我的解法:**一次写对 Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4740} -MaxEvents 20,也知道 Caller Computer Name 用于定位来源、4776 的 0x0 是成功;但“锁定原因”还需要进一步追查。
**正确思路与答案:**4740 说明锁定,并给出来源线索,不直接证明是谁亲手输错。结合来源机器、认证失败事件、服务、计划任务和保存的旧密码继续查。4776 要看 Status;4771 的 0x25 优先查时钟。只看事件 ID 不够。
实机排障:三次真实故障
以下是在 CORE01、CORE02、USER01 实验环境中的操作与观察,不是虚构输出。三处故障都已恢复;没有改动 DC 的 FSMO、复制或 DNS 服务。
实战 1:USER01 失去网络
**题目与现象:**USER01 无法访问域资源。故障前管理机能连到它的 192.168.254.30;故障后 Ping 与 TCP 445 均失败。
我的排查与结论:ipconfig 读不到可用 IP,与 DC 和 DNS 完全断开;判断虚拟网线被拔,即 VMware 网络适配器的连接被断开。
**正确思路与答案:**判断准确。没有可用 IP 时,DNS 与 AD 错误多半是下游现象。先恢复网卡连接,再验证 IP、Ping 和端口。恢复后 Ping 与 TCP 445 均正常。
掌握度:熟练。 能从最底层开始排除,不被后续 DNS 报错带偏。
实战 2:只能在指定计算机登录
题目与现象:qianyue 在 USER01 新登录时报“此用户不被允许登录此计算机”;管理员可进入系统,ipconfig /all 与到 DC 的 Ping 正常。
**我的排查与结论:**在用户属性中发现“此用户可以登录到”只允许 QYNET-LAB99,并自行改回“所有计算机”。
**正确思路与答案:**判断准确。对应 AD 的 userWorkstations 登录工作站限制,不是账户被禁用、密码错或 USER01 断网。恢复后只读核对该属性为空,账户启用标志未变。
掌握度:熟练。 能依据准确的错误文本缩小排查范围。
实战 3:有 IP,却无法正常定位域
**题目与现象:**USER01 仍有 192.168.254.30,从管理机按 IP 可连通,但域资源访问或域控定位出现异常。
**我的排查与结论:**发现 USER01 的 DNS 服务器地址被改错,手动恢复为 192.168.254.10。
**正确思路与答案:**判断准确。有 IP 且网络通,不代表 DNS 配对。先看 Get-DnsClientServerAddress -AddressFamily IPv4 或 ipconfig /all,再对比按 IP 访问与按名称、SRV 查询。恢复后只读核对 DNS 指向 192.168.254.10,USER01 按 IP 可连通。
掌握度:熟练。 下一次可先保留 DNS/SRV 失败输出,再修复,练完整排障记录。
当前掌握度与后续出题方向
| 等级 | 知识点 | 后续练法 |
|---|---|---|
| 稳定,可提高难度 | 基础 -Filter、成员关系、事件基础判读、SPN 查重、FSMO 用途、实机网络分层 | 少考孤立命令,多给现象和输出,让我选下一步。 |
| 会用,但需闭卷复测 | Enabled 拼写、-Properties、FSMO 属性全名、DomainLocal、whoami / klist 拼写 | 少量短题,不给提示;写错当场重写。 |
| 当前重点薄弱点 | LastLogonDate / lastLogonTimestamp / lastLogon、DNS 配置与解析的区别、Remove-ADComputer / Remove-Computer | 用相似选项和小故障混合练,而非只背定义。 |
| 综合排障进阶 | 区分网络、DNS、AD 对象、登录限制、票据、令牌和 ACL | 一次只给一个可见症状,自己先提出检查顺序,再逐步给证据;故障需可恢复。 |
下次开场先闭卷复述的六句话
- 尽量准确地找最后登录时间:向每台 DC 查询不复制的
lastLogon,取最大值;LastLogonDate只用于长期粗筛。 Get-DnsClientServerAddress看本机配置了哪台 DNS;Resolve-DnsName/nslookup看能不能解析。Remove-Computer让 Windows 设备退域;Remove-ADComputer删除 AD 中的计算机对象。- 用户 → Global → DomainLocal → 资源 ACL;
GroupCategory=Security才能用于授权。 klist purge清票据;新组是否进入当前会话要看whoami /groups,必要时注销重登。- 1722 先查 DNS、网络及 RPC;跨站点复制先定位源、目标与分区,不直接全林推送。
参考资料
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!













