Windows AD PowerShell(十五):GPO 相关
这是 Windows AD PowerShell 学习记录的第十五节。排查 GPO 时,先区分 GPO 对象本身、它链接到了哪里,以及客户端最终有没有应用。有 GPO 不代表已经链接;链接到了 OU,也不代表目标一定通过了安全筛选和 WMI 筛选。
**数据来源说明:**2026 年 9 月 28 日通过已有的 ldap3 环境对实验域
qy.net做了只读查询,确认了 5 个 GPO 对象及部分 OU、域根上的gPLink。下面“按 VM 目录数据整理”的输出是 PowerShell 格式示例,不是已在 VM PowerShell 控制台执行的结果。Get-GPOReport、Backup-GPO和gpresult本节均未执行,未创建报告、备份或修改策略。
十五、GPO 相关
15.1 先确认模块与查询范围
以下 Get-GPO、Get-GPInheritance 等命令属于 GroupPolicy 模块,需要在已安装 GPMC/RSAT 的管理机或域控上运行,并具有相应读取权限。它与第三、四节使用的 ActiveDirectory 模块不是同一个模块。
# 检查是否有 GroupPolicy 模块Get-Module -ListAvailable GroupPolicy | Select-Object Name,Version,Path
# 若没有输出,先检查是否安装 GPMC / RSAT;本节未在 VM PowerShell 执行在子域或多域环境中,默认查询的是当前身份所属的域;需要时给 Get-GPO 等命令显式指定 -Domain 'qy.net'。这也能避免把“别的域中查不到”误认为 GPO 被删。
15.2 查看所有 GPO
Get-GPO -All | Select-Object DisplayName,Id
# 按 VM 目录查询结果整理的格式示例,非 PowerShell 实机直出DisplayName Id----------- --Default Domain Policy 31b2f340-016d-11d2-945f-00c04fb984f9Policy-WSUS 51cebfee-ab77-4d9f-b4cd-6b9d78f4af87Software-GPO 62c3d92c-9c6b-439b-bebf-e20016a31712Default Domain Controllers Policy 6ac1786c-016f-11d2-945f-00c04fb984f9Policy-User d5199290-648b-49fa-a341-1088b2d4288b**VM 实测:**目录中有这 5 个 GPO 对象。这里只能证明对象存在,不能仅凭这个列表判断谁会收到策略。
15.3 查看某个 GPO 的信息
Get-GPO -Name 'Default Domain Policy' | Select-Object DisplayName,Id,DomainName
# 按 VM 目录查询结果整理的格式示例,非 PowerShell 实机直出DisplayName Id DomainName----------- -- ----------Default Domain Policy 31b2f340-016d-11d2-945f-00c04fb984f9 qy.netGet-GPO 还可查看创建时间、修改时间、用户与计算机配置版本等;若显示名重名,最好用 GUID 定位。版本号变化也不能单独证明客户端已经应用策略,客户端结果要用后面的 gpresult 查。
15.4 查看 GPO 链接与继承
以 浅月 所在管理用户 OU 为例:
Get-GPInheritance ` -Target 'OU=User,OU=Admin,OU=Organization,DC=qy,DC=net' | Select-Object Path,GpoInheritanceBlocked,GpoLinks,InheritedGpoLinks
# 这条命令未在 VM PowerShell 中执行;具体集合显示与顺序以现场结果为准重点看两个属性:
| 属性 | 该看什么 |
|---|---|
GpoLinks | 直接链接到目标 OU 的 GPO,包含禁用的链接 |
InheritedGpoLinks | 在该位置参与处理的已启用链接列表,既可能包含本 OU 的直接链接,也可能包含上级继承的链接 |
GpoInheritanceBlocked | 目标 OU 是否阻止普通上级链接的继承;被强制的链接不受阻止继承影响 |
VM 目录只读核对:目标 OU=User,OU=Admin,... 本身没有直接 GPO 链接;上级 OU=Admin,... 链有 Policy-User,OU=Organization,... 链有 Software-GPO,域根链有 Policy-WSUS 和 Default Domain Policy。这只是链接层面的候选关系,具体客户端是否应用仍要看 GPO 启用状态、安全筛选、WMI 筛选与实际处理结果。
只想看这个 OU 直接链接了什么,可展开 GpoLinks:
Get-GPInheritance ` -Target 'OU=User,OU=Admin,OU=Organization,DC=qy,DC=net' | Select-Object -ExpandProperty GpoLinks
# 当前 VM 目录中该 OU 没有直接 gPLink;预期无输出💡 GPO 是独立对象,链接是另一层关系。
Get-GPO -All查到Policy-User,并不能说明它链接到了某台计算机所在 OU。计算机策略看计算机对象的 OU 路径;用户策略通常看用户对象的 OU 路径。需要进一步研究例外时再看环回处理(Loopback)。
15.5 导出 GPO 报告
报告适合在改动前留档,能查看设置、链接、权限和筛选信息:
# 路径是运行命令的管理机本地路径,先确保目录存在New-Item -ItemType Directory -Path 'C:\Temp\GPOReports' -Force | Out-Null
Get-GPOReport ` -Name 'Default Domain Policy' ` -ReportType Html ` -Path 'C:\Temp\GPOReports\Default-Domain-Policy.html'
# 成功时报告写入文件;本节未在 VM 上生成此文件Get-GPOReport 是配置报告,不是“某台客户端实际应用了什么”的报告。后者要在目标机器上运行 gpresult。
15.6 改动前备份 GPO
# 先准备备份目录;实际环境应放在受控、可离线保存的位置New-Item -ItemType Directory -Path 'C:\GPOBackup' -Force | Out-Null
Backup-GPO -All -Path 'C:\GPOBackup' | Select-Object DisplayName,GpoId,Id
# 成功时会为每个 GPO 返回一条备份记录;GpoId 是策略 GUID,Id 是本次备份 GUID# 本节未执行、未生成实际备份 ID⚠️ **改 GPO 前先备份,但不要把备份误当成完整域灾备。**备份耗时取决于策略数量、SYSVOL 内容、网络与磁盘情况,不能保证“只要几秒”。GPO 备份也不能替代 AD/System State 备份;恢复后还应核对 OU 链接、继承与目标端结果。域控备份见第十一节:备份与恢复。
本节不直接演示 Restore-GPO:恢复会更改实际策略,学习时先在实验环境核对备份内容、目标 GPO、审批和回退方案。
15.7 排查“GPO 已链接,却没有生效”
先在管理端确认目标对象所在 OU,再看该 OU 的链接与继承:
# 计算机策略先看计算机对象位置;用户策略则换用 Get-ADUserGet-ADComputer -Identity 'QYNET-USER01' | Select-Object Name,DistinguishedName
# 按 VM 目录查询结果整理的格式示例,非 PowerShell 实机直出Name DistinguishedName---- -----------------QYNET-USER01 CN=QYNET-USER01,OU=Computer,OU=Admin,OU=Organization,DC=qy,DC=net然后在目标计算机上运行:
# 文本版先快速看计算机策略gpresult /r /scope computer
# 本节未在目标机执行;请查看“应用的组策略对象”和“被拒绝的组策略对象”需要更完整的明细时再导出 HTML:
New-Item -ItemType Directory -Path 'C:\Temp' -Force | Out-Nullgpresult /h C:\Temp\gpresult.html
# 成功时生成 C:\Temp\gpresult.html;本节未在目标机执行如果策略刚修改,可在目标机运行 gpupdate /force 后再查,但有些设置仍需注销或重启才能最终生效。
| 现象 | 下一步 |
|---|---|
| GPO 根本不在适用范围 | 查对象所在 OU、站点/域/OU 链接、链接启用状态与继承阻止 |
| 出现在“被拒绝”列表 | 看具体拒绝原因,再查安全筛选、读取/应用权限和 WMI 条件 |
| 出现在“已应用”列表,但设置没达到预期 | 查策略冲突、优先级、客户端扩展、事件日志、是否需注销/重启 |
| 同一 OU 中部分机器有效、部分无效 | 比对计算机账户组归属、WMI 结果、GPO/SYSVOL 可达性与刷新时间 |
注意:**没有链接到目标范围的 GPO,不一定会出现在 gpresult 的“被拒绝”列表。**不能只凭“被拒绝列表里找不到它”就判断策略链路正常。若怀疑 SYSVOL 或域控复制问题,再看第五节:复制健康和第六节:dcdiag 健康检查。
15.8 一道小排障题
Get-GPO -Name 'Policy-User'查得到策略,但 USER01 登录后仍没有得到预期的用户设置。你按什么顺序查?
先确认用户对象实际所在 OU;再用 Get-GPInheritance 看该 OU 的直接与继承链接;接着在 USER01 的该用户会话运行 gpresult /h,看适用与拒绝原因;最后查安全筛选、WMI、冲突和客户端事件日志。“GPO 对象存在”只完成了第一步。
参考资料
- Microsoft Learn:GroupPolicy 模块
- Microsoft Learn:Get-GPInheritance
- Microsoft Learn:Get-GPOReport
- Microsoft Learn:Backup-GPO
- Microsoft Learn:gpresult
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!













