【PowerShell】GPOのリンクの一覧をCSV出力
久々にSE系の話題
Active DirectoryのGPOについて、修正する前に影響するOUを確認したり、逆にどのOUにもリンクされていない不要なポリシーを探すうえで、CSVに一覧で出力出来たら便利だなーと思ってPowerShellでスクリプトを作ってみました。
$objLogCsvArry = @(); $GPO_All = (Get-GPO -All) foreach ($GPO in $GPO_All){ [xml]$GPReport = (Get-GPOReport -Id $GPO.Id -ReportType xml) if($GPReport.GPO.LinksTo.Count -eq 0){ $objLogCsv = New-Object PSCustomObject $objLogCsv | Add-Member -NotePropertyMembers @{ "GPOName" = $GPO.DisplayName "SOMName" = '' "SOMPath" = '' "Enabled" = '' "NoOverride" = '' } $objLogCsvArry += $objLogCsv } else { foreach($LinkTo in $GPReport.GPO.LinksTo){ $objLogCsv = New-Object PSCustomObject $objLogCsv | Add-Member -NotePropertyMembers @{ "GPOName" = $GPO.DisplayName "SOMName" = $LinkTo.SOMName "SOMPath" = $LinkTo.SOMPath "Enabled" = $LinkTo.Enabled "NoOverride" = $LinkTo.NoOverride } $objLogCsvArry += $objLogCsv } } } $objLogCsvArry | Select-Object "GPOName","SOMName","SOMPath","Enabled","NoOverride" | Sort-Object "GPOName","SOMPath" | Export-Csv -Path ".\GPO_LinksTo.csv" -Encoding "Default" -NoTypeInformation
どこにもリンクされていないGPOの場合は、"GPOName"だけがセットされて、その他の項目はブランクの行が1行出力されるようになっています。
また、出力はカレントディレクトリに"GPO_LinksTo.csv"のファイル名で出力されるようになっていますが、そこは適宜見直してもらえればよいかと思います。
以上、参考までに。