【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"のファイル名で出力されるようになっていますが、そこは適宜見直してもらえればよいかと思います。
以上、参考までに。





