I just posted my first PowerShell module to the PowerShell Gallery, even though it’s been available on my GitHub site for a little while longer. It’s a small project, with only two (2) functions, so far. Get-GPOComment and Export-GPOCommentReport.
Get-GPOComment is purely CLI and helps query GPO’s to return embedded descriptions, comments and so on.
Export-GPOCommentReport is a CLI function as well, but produces an HTML report, which is technically GUI output, of embedded GPO comments and descriptions.
The module is simple to load by way of the Install-Module and Import-Module cmdlets (see below). The only requirement is to have the GroupPolicy PowerShell module installed first. This is normally installed on all AD domain controllers, as well as other servers and workstations which have the Windows 10 RSAT package installed (tip: You can also use Chocolatey to install RSAT: choco install rsat <or> cinst rsat)
Loading The PowerShell Module
Install-Module GPODoc
Trying it out: Get-GPOComment
Get-GPOComment -GPOName '*' -PolicyGroup Policy
Get-GPOComment -GPOName '*' -PolicyGroup Preferences
You can easily modify the output layout since the output is in hash table format…
Get-GPOComment -GPOName '*' -PolicyGroup Preferences | Format-Table
If you want more flexibility in selecting the inputs, you can use the Get-GPO cmdlet and channel the output through a pipeline. For example…
Get-GPO -All | Where-Object {$_.DisplayName -like "U *"} | Select-Object -ExpandProperty DisplayName | Foreach-Object {Get-GPOComment -GPOName $_ -PolicyGroup Policy}
The parameters for this function are as follows:
- GPOName
- [string] single or array of GPO names
- PolicyGroup
- [string] (select list) = “Policy”, “Preferences” or “Settings”
- Policy = query the GPO descriptions only
- Settings = query the comments attached to GPO internal settings only
- Preferences = query the comments attached to GPO Preferences internal settings only
This also respects -Verbose if you want to see more background details.
Export-GPOCommentReport
This function only takes two (2) inputs:
- GPOName
- [string] single or array of GPO names
- ReportFile
- [string] the path/filename for the HTML report file to create.
It invokes Get-GPOComment, combining “policy”,”preferences” and “settings” output, and writes it all to an HTML report file of your choosing. The CSS formatting is hard-coded for now, but I’m open to feedback if you want more options. You can specify the GPO name(s) directly, or feed them via the pipeline.
Example web report…
If you used 1.0.1 (posted a few days earlier) scrap that and get 1.0.2. The older version had some major bugs in the Get-GPOComment function, and the Export-GPOCommentReport function wasn’t available until 1.0.2.
Feedback and suggestions are welcome. Even if it’s “hey man, your shit sucks. Consider a dishwashing job, or something else.” Any feedback is better than no feedback.
Thank you!