使用 PowerShell 創建 Active Directory 群組策略報告。通過 Get-GpoReport
cmdlet 的幫助,我們可以生成有關群組策略(GPO)的報告,從簡單的基於文本的報告到完整的超文本標記語言(HTML)報告。此外,我們可以使用 PowerShell 自動化此報告生成過程。這樣可以節省時間並獲取有關您的Active Directory(AD)系統的重要信息。在本文中,我們將介紹如何導入 PowerShell GPO 模塊,導出 GPO 並將 GPO 鏈接到組織單元(OU)。這將作為一個示例,以便它們共同工作來生成一些一流的報告。
我們應該從如何使用 PowerShell 創建 Active Directory 策略報告開始嗎?
使用 PowerShell 創建 AD Group Policy 報告(GPO)
先決條件
在本文中,我們將討論一些涉及創建和修改現有 GPO 的情況。如果您想按照示例進行操作,請確保已經具備以下條件:
- Group Policy 的 PowerShell 模塊。如果您使用的是 Windows 10,可以通過下載並安裝 RSAT 來找到它;如果您使用的是 Windows Server,可以使用下面的 PowerShell 命令:
Install-WindowsFeature -Name GPMC
- A computer member of the same AD domain from which we will query GPOs.
- 一台加入域並具有讀取 GPO 權限的域用戶帳戶的 AD 加入計算機。
使用 Get-GpoReport 生成 HTML 報告
首先,讓我們想像一下我們有一個單一的GPO。因此,你想要查看它的設置(以及生成一個HTML報告)以開始進行。幸運的是,Get-GpoReport
可以發現GPO並利用PowerShell導出它們。為了做到這一點,我們需要GPO的名稱或GPO的全球唯一標識符(GUID)。
因此,您需要使用至少三個參數來創建詳細的HTML報告:
- 用於定位GPO的名稱或Guid。
- ReportType參數用於指定要生成的報告類型。我們可以在HTML或XML(可擴展標記語言)之間進行選擇。
- Path用於指定我們想要將報告保存到的位置。
也許您的環境中有一個 GPO。例如,如果我們知道GPO的名稱,我們可以為報告類型指定值HTML
以生成一個HTML報告,並指定您希望將此HTML文件保存到的路徑,就像在這個例子中所做的那樣。
Get-GPOReport -Name 'Sample GPO' -ReportType 'HTML' -Path 'C:\Temp\SampleReport.html'
或者,我們可以使用Guid
參數來查找GPO,但這是使用下面的例子的額外步驟。
$gponame = (Get-GPO -Name 'Sample GPO').Id
Get-GPOReport -Guid $gponame -ReportType 'HTML' -Path 'C:\Temp\SampleReport.html'
準備好後,我們可以在您偏好的瀏覽器中查看報告。
為所有GPO生成HTML報告
或者,要為GPO創建一個整個域報告。在這種情況下,我們必須使用全部
引數來查詢域中的每個GPO。然而,這一次,我們不是使用名稱
或Guid
選項來指定特定的GPO,而是使用全部
開關參數來找到它們。
Get-GPOReport -All -ReportType Html -Path "C:\Temp\All-SampleReport.html"
同時閱讀Office 365 使用者報告
使用 Get-GpoReport 生成 XML 報告
例如,下面我們查詢一個現有的 GPO,名為示例報告
,以生成一個 XML 報告。然後,我們使用Invoke-Item
命令在 XML 檔案的預設應用程式中打開該報告:
Get-GPOReport -Name 'Sample GPO' -ReportType Xml -Path "C:\temp\SampleReport.xml"
Invoke-Item -Path "C:\Temp\SampleReport.xml"
完成後,我們將看到類似下方截圖的 XML 檔案。
首先,我們注意到GPO XML節點包含了所有內容。在它裡面,我們可能會發現像識別碼
(GPO GUID),名稱
(GPO名稱),包含註釋, 安全 描述符, SDDL
以及更多資訊。
GPO XML報告
除了格式之外,這個XML報告與HTML有什麼不同?基本上,HTML報告中看到的屬性也存在於XML報告中。但它們結構更清晰,更容易解析。
重要的是,當我們修改GPO時,策略版本(計算機或用戶)會增加。因此,組策略處理引擎可以確定何時應用新設置以及何時策略已更改。此外,此行為將允許我們在更改GPO後啟動gpupdate.exe而無需使用聯合/force開關。
另請參閱 Active Directory管理
使用InfraSOS檢查Active Directory組策略報告
試用免費,訪問所有功能。– 200多個AD報告模板可用。輕鬆自定義您自己的AD報告。
GMPC
我們可以在GPMC中查看GPO版本(用於AD和SYSVOL)及其狀態。
此外,即使 VersionDirectory
和 VersionSysvol
的值为 0
,而 Enabled
是 true
,客戶端電腦仍會處理一個策略。系統會通知處理引擎我們不需要實施 GPO 的相關部分。改變配置不會對相對較短的網絡上的快速電腦的性能產生太大影響。即便如此,它仍然可以節省許多寶貴的秒數,尤其是對於較老的機器和較慢的網絡。
因此,客戶端機器上的處理引擎將不應用具有 VersionDirectory
和 VersionSysvol
大於 0
但 Enabled
設置為 false
的策略。我們可能會問為什麼某些設置不應用。因此,重要的是調查這是否是一個意外還是有意的。
假設我們熟悉 GPO 的內部運作方式。在這種情況下,我們可以使用 Get-GPOReport
命令。這樣可以直接通過引用屬性來檢查這些設置,而不是導航到 GPMC。
或者,我們可能希望專注於 GPO 中的一些設置。或者最終我們希望使用 PowerShell 將 GPO 附加到 OU,這樣我們就不需要創建報告。
- 在這種情況下,請移除
Path
參數。注意[xml]
的轉換以及下面的例子中沒有Path
參數。
[xml]$GpoXml = Get-GPOReport -Name 'Sample GPO' -ReportType Xml
2. 現在我們已經將Get-GPOReport's
的輸出轉換成XML物件,我們可以使用簡潔的點符號快速引用其眾多屬性。
$GpoXml.GPO.Computer
$GpoXml.GPO.User
3. 添加一個foreach
迴圈,並使用All
參數來遍歷每個GPO輸出。
$AllGpos = Get-GPO -All
$GpoVersionInfo = foreach ($gpo in $gpos) {
[xml]$g = Get-GPOReport -ReportType Xml -Guid $gpo.Id
[PSCustomObject]@{
"Name" = $g.GPO.Name
"Comp-Ad" = $g.GPO.Computer.VersionDirectory
}
}
$GpoVersionInfo | Sort-Object Name | Format-Table
解析XML GPO報告
我們可以使用Get-GPOReport
產生的XML輸出來了解GPO的許多方面。在前面的例子中,如果我們查看之前模型的$GPOXML.GPO.Computer
和$GPOXML.GPO.User
屬性,我們將看到如下的ExtensionData
屬性。
如下所示,我們可以通過在PowerShell中訪問這些XML節點來開始根據XML數據創建您的報告。
$PolicyDetails = foreach ($policy in $GpoXml.GPO.User.ExtensionData.Extension.Policy) {
[PSCustomObject]@{
"Name" = $policy.Name
"State" = $policy.State
}
}
$PolicyDetails
感謝您閱讀我們關於如何使用PowerShell創建Active Directory策略報告的博客文章。讓我們總結一下。
使用PowerShell創建Active Directory群組策略報告結論
除了本機的群組策略管理控制台(GPMC)外,本文還介紹了將群組策略以HTML和XML格式匯出以生成全面報告的方法。我們還討論了Get-GpoReport
cmdlet。這個cmdlet現在可以通過PowerShell檢索與GPMC相同的信息,這使我們能夠同時查詢多個GPO,這肯定有助於構建出色的報告。
Source:
https://infrasos.com/create-active-directory-policy-reports-with-powershell/