Windows AD Practice Day3

5471 字
27 分钟
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。

我的回答:

Terminal window
Get-ADUser -Filter 'Enabled -eq $false' |
Select-Object Name, SamAccountName, DistinguishedName

批改:正确。 Enabled 拼写、筛选条件与输出字段都准确。这里用 -Filter 找对象,用 Select-Object 限制显示列。

Q2:已启用的 IT 用户#

**题目:**找出 Department 为 IT 且已启用的用户,只显示 Name、SamAccountName、Department。注意:既要筛选,也要让部门字段出现在输出中。

我的回答:

Terminal window
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:组对象、组成员和用户所属组#

**题目:**分别写出命令:

  1. 查询 QYNET-Admin 组对象的类型和作用域。
  2. 递归查询 QYNET-Admin 的成员。
  3. 查询 qianyue 属于哪些组。

我的回答:

Terminal window
Get-ADGroup QYNET-Admin | Select-Object ObjectClass, GroupScope
Get-ADGroupMember -Identity 'QYNET-Admin' -Recursive
Get-ADPrincipalGroupMembership -Identity 'qianyue'

批改:后两条正确;第一条查错了一个字段。 ObjectClass 告诉你对象类别是 group,不能判断这是安全组还是通讯组。题目要的“类型和作用域”分别是 GroupCategory 与 GroupScope:

Terminal window
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 通常以什么符号结尾?

我的回答:

Terminal window
Get-ADComputer -Filter 'Enabled -eq $false' |
Select-Object Name, DNSHostName, DistinguishedName

并回答计算机账户的 SamAccountName 通常以 $ 结尾。

批改:正确。 这次 Enabled 没再误写成 Enable。

Q5:DC 与全局编录(GC)#

题目:列出所有 DC,只显示 Name、Site、IsGlobalCatalog。如果其中一台显示 IsGlobalCatalog=False,能否仅凭这一点判定它故障?

我的回答:

Terminal window
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。

我的回答:

Terminal window
Get-ADForest | Select-Object SchemaMaster, DomainNamingMaster
Get-ADDomain | Select-Object PDCEmulator, RIDMaster, InfrastructureMaster

批改:两条查询命令都正确;漏答退役方式。 原持有者在线且可正常交接时,用 transfer,不是 seize。先确认目标 DC 健康与复制正常,再转移角色、核验持有者、正常降级旧 DC。seize 是原持有者确实无法恢复时的强制接管手段。

Q7:复制摘要与详情#

**题目:**分别写出命令:

  1. 查看复制摘要,但只显示错误。
  2. 查看 QYNET-CORE02 的复制伙伴与各分区详情。

我的回答:

Terminal window
repadmin /replsummary /errorsonly
repadmin /showrepl QYNET-CORE02

批改:正确。 第一条看失败摘要,第二条看指定 DC 的复制伙伴与分区详情;需要更细的信息可以加 /verbose。

Q8:DCDiag 先连通、后 DNS#

**题目:**先检查 DC 连通性,再单独检查 DNS。写出两条 dcdiag 命令,并用一句话说明为什么按这个顺序。

我的回答:

Terminal window
dcdiag /test:Connectivity
dcdiag /test:dns

解释为“先判断服务器挂了还是域名解析挂了”。

批改:命令和大体顺序正确,解释需要收紧。 Connectivity 本身也会涉及 DNS 中的 DC 定位,以及 LDAP/RPC 可达性;它不是纯 Ping,更不能凭单次失败断定服务器已经关机。随后用 /test:DNS 做更细的 DNS 检查,结合错误信息定位具体环节。

Q9:SPN 反查、查重与安全添加#

**题目:**针对 HTTP/testweb.qy.net,分别写出命令:

  1. 反查它属于哪个账户。
  2. 检查重复 SPN。
  3. 确认没有重复后,安全地添加到 svc_testweb。

最后说明为什么不优先使用 setspn -A。

我的回答:

Terminal window
setspn -Q HTTP/testweb.qy.net
setspn -X
setspn -S HTTP/testweb.qy.net svc_testweb

解释 -S 会检查重复,-A 不会先查重。

批改:题目范围内正确。 如果排查对象横跨整个林,应明确查询范围,例如:

Terminal window
setspn -F -Q HTTP/testweb.qy.net
setspn -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 凭据的立刻更新,但是用户凭据是无法更新的,必须注销重登。

批改:四层都想到了,概念用词仍需纠正。

  1. 在 AD 中确认新组成员关系,并检查组的 GroupCategory 与嵌套关系。
  2. 在用户当前电脑、当前登录会话执行 whoami /groups;新组不在令牌中时,让用户注销并重新登录。
  3. 在文件服务器查询 Get-SmbShareAccess,确认共享权限。
  4. 再查共享对应本地目录的 Get-Acl,确认 NTFS ACL;两层权限都要核对,还要注意显式拒绝项。
Terminal window
# 在用户当前登录会话中:看访问令牌
whoami /groups
# 在文件服务器上:看共享权限
Get-SmbShareAccess -Name 'Public'
# 在文件服务器上:将路径换成共享实际对应的本地目录
Get-Acl 'D:\Shares\Public' | Select-Object -ExpandProperty Access

klist purge 清除当前会话缓存的 Kerberos 票据,有助于在相关配置修复后重新申请票据;它不会重建当前桌面登录会话的访问令牌,也不保证现有 SMB 连接自动更新。这里不是“用户凭据需要同步”,而是登录时生成的令牌可能仍缺少新组 SID。注销重登是更可靠的验证方式。

Q11:时间偏差与 Kerberos#

**题目:**一台成员机比 DC 快 12 分钟,域账户登录失败。请写出查看时间源与同步状态的两条命令,并解释最可能受影响的认证机制。若林根域 PDC 显示 Local CMOS Clock,正式环境通常应该如何设计它的上游时间源?

我的回答:

Terminal window
w32tm /query /source
w32tm /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 是否开放;应使用:

Terminal window
Resolve-DnsName QYNET-CORE02.qy.net
Test-Connection QYNET-CORE02 -Count 2
Test-NetConnection QYNET-CORE02 -Port 135
repadmin /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 对。

Terminal window
$newUserSam = 'newuser' # 换成刚创建的用户登录名
Get-ADUser -Identity $newUserSam -Server DC01
Get-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、复制与 DCDiagGet-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 是验证成功。稳定
SPNsetspn -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 服务器配置的命令。

正确思路与答案:

Terminal window
# 查看本机配置的 DNS 服务器
Get-DnsClientServerAddress -AddressFamily IPv4
# 查 LDAP 服务定位记录
nslookup -type=SRV _ldap._tcp.qy.net
# 更明确地检查 DC Locator 记录
nslookup -type=SRV _ldap._tcp.dc._msdcs.qy.net

Resolve-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一次只给一个可见症状,自己先提出检查顺序,再逐步给证据;故障需可恢复。

下次开场先闭卷复述的六句话#

  1. 尽量准确地找最后登录时间:向每台 DC 查询不复制的 lastLogon,取最大值;LastLogonDate 只用于长期粗筛。
  2. Get-DnsClientServerAddress 看本机配置了哪台 DNS;Resolve-DnsName / nslookup 看能不能解析。
  3. Remove-Computer 让 Windows 设备退域;Remove-ADComputer 删除 AD 中的计算机对象。
  4. 用户 → Global → DomainLocal → 资源 ACL;GroupCategory=Security 才能用于授权。
  5. klist purge 清票据;新组是否进入当前会话要看 whoami /groups,必要时注销重登。
  6. 1722 先查 DNS、网络及 RPC;跨站点复制先定位源、目标与分区,不直接全林推送。

上一篇:Windows AD Practice Day2

下一篇:Windows AD Practice Day4

参考资料#

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
Windows AD Practice Day3
https://springtsuki.xucjno.com/posts/springtsuki/notes/windowsad/practice/924/
作者
SpringTsuki
发布于
2026-09-24
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
SpringTsuki
你好,我是浅月。
公告
浅月的开发小窝!欢迎你来到这里!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
56
分类
9
标签
42
总字数
188,888
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录