技術文章 · IT 指令工具箱

GPO 指令:gpresult、gpupdate、備份與群組原則排錯

GPO 沒套用怎麼查?整理 gpresult、gpupdate、Get-GPOReport、Backup-GPO、Inheritance、權限、WMI Filter 與安全變更做法。

作者 Steve Chen · 發布  · 約 7 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

GPO 問題要分清楚電腦設定、使用者設定、Security Filtering、WMI Filter、繼承順序與 SYSVOL 複寫。先產生實際結果報告,再動 link order 或強制更新。

18 組範例Windows Server 2019/2022/2025Windows 10/11GPMC查核日期:2026-08-11
動手前:GPO 一改可能同時影響整個 OU。先備份 GPO、確認 link 範圍、用測試 OU 與測試電腦驗證;密碼、Firewall、服務與 BitLocker 政策尤其不能直接全域套用。

用戶端實際套用結果

查看使用者與電腦摘要系統管理員 CMD

gpresult /r

分開看 Computer Settings 與 User Settings。

輸出 HTML 報告系統管理員 CMD

gpresult /h C:\Temp\gpresult.html /f

報告含帳號、群組與政策資訊,不要公開上傳。

只看電腦政策系統管理員 CMD

gpresult /scope computer /v

系統管理員權限才能看到完整電腦結果。

輸出完整文字報告系統管理員 CMD

gpresult /z > C:\Temp\gpresult-full.txt

內容很長,適合搜尋 Denied GPOs 與 Filtering。

用 PowerShell 產生 RSoP系統管理員 PowerShell

Get-GPResultantSetOfPolicy -ReportType Html -Path .\rsop.html

需安裝 GroupPolicy 模組。

更新電腦政策系統管理員 CMD

gpupdate /target:computer /force

可能要求登出或重開機;遠端使用者先通知。

更新使用者政策命令提示字元

gpupdate /target:user /force

若政策要在登入時處理,仍可能需要重新登入。

GPO 盤點與備份

列出所有 GPOPowerShell(GPMC)

Get-GPO -All | Sort-Object DisplayName | Select-Object DisplayName,Id,GpoStatus,ModificationTime

找出同名、停用或久未維護的 GPO。

匯出所有 GPO 報告系統管理員 PowerShell

Get-GPOReport -All -ReportType Html -Path C:\GPOBackup\all-gpo-report.html

報告可供搜尋設定與稽核。

備份所有 GPO系統管理員 PowerShell

Backup-GPO -All -Path C:\GPOBackup

備份檔和報告要一起保存並測試還原流程。

備份單一 GPO系統管理員 PowerShell

Backup-GPO -Name 'Workstation Baseline' -Path C:\GPOBackup

變更前留存版本與變更單號。

查看 OU 繼承PowerShell

Get-GPInheritance -Target 'OU=Workstations,DC=corp,DC=example'

同時看 Block Inheritance、GPO Links、Enforced 與順序。

查看 GPO 權限PowerShell

Get-GPPermission -Name 'Workstation Baseline' -All

Authenticated Users 沒有 Read 也可能造成套用異常。

受控建立與測試

建立空白 GPO系統管理員 PowerShell

New-GPO -Name 'TEST-Workstation-Baseline' -Comment '測試 OU 驗證後再正式套用'

先建 TEST 命名,避免直接覆蓋正式 GPO。

連結到測試 OU系統管理員 PowerShell

New-GPLink -Name 'TEST-Workstation-Baseline' -Target 'OU=GPO-Test,DC=corp,DC=example' -LinkEnabled Yes

確認 Target DN,別誤連到 domain root。

停用單一 link系統管理員 PowerShell

Set-GPLink -Name 'TEST-Workstation-Baseline' -Target 'OU=GPO-Test,DC=corp,DC=example' -LinkEnabled No

停用 link 不會刪除 GPO 本體,方便回復。

寫入測試 Registry Policy系統管理員 PowerShell

Set-GPRegistryValue -Name 'TEST-Workstation-Baseline' -Key 'HKLM\Software\Contoso\Baseline' -ValueName 'Pilot' -Type DWord -Value 1

先確認應寫 Policies 路徑或一般 registry,以及撤除時的行為。

遠端要求更新測試機系統管理員 PowerShell

Invoke-GPUpdate -Computer PC-TEST01 -Target Computer -RandomDelayInMinutes 0

需 WinRM、Firewall、排程服務與權限;只對測試機使用。

怎麼確認有做對

  • gpresult 報告顯示 Winning GPO 與預期設定。
  • Event Viewer 的 GroupPolicy Operational log 沒有持續錯誤。
  • 測試 OU 驗證登入、重開機、離線與 VPN 情境後才分批擴大。

常見錯誤

  • 用 gpupdate /force 當成所有問題的答案。
  • 忽略 GPO 被 Denied 的原因與讀取權限。
  • 直接改 Default Domain Policy 塞入所有設定。
  • 用 dcgpofix 還原一般自建 GPO。

常見問題

gpupdate 成功,為什麼設定還是沒出現?

成功只代表更新流程跑完。要看 gpresult 的 Winning GPO、Denied GPOs、Security Filtering、WMI Filter、loopback、link order 與設定所在的 user/computer scope。

能直接跑 dcgpofix 修 GPO 嗎?

dcgpofix 只用來重建預設的 Default Domain Policy/Default Domain Controllers Policy,不會修復自建 GPO,還可能覆蓋你原本的預設政策內容。

延伸閱讀

版本與官方文件

參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。

常見問題

gpupdate 成功,為什麼設定還是沒出現?

成功只代表更新流程跑完。要看 gpresult 的 Winning GPO、Denied GPOs、Security Filtering、WMI Filter、loopback、link order 與設定所在的 user/computer scope。

能直接跑 dcgpofix 修 GPO 嗎?

dcgpofix 只用來重建預設的 Default Domain Policy/Default Domain Controllers Policy,不會修復自建 GPO,還可能覆蓋你原本的預設政策內容。

聯絡廷皓討論 看更多文章