SEブログ

【Active Directory】OUにリンクされていないGPOを調べる

こんにちは!SE ブログの相馬です。

 

 

 

今回は、Active Directory の GPO について、OU にリンクされていない GPO を調べる方法について書いてみました。

 

 

OU にリンクされている GPO を調べる方法は以下の記事にございます。

 

 

【Active Directory】OUにリンクされているGPOを調べる

 

 

 

PC の構成を使いやすくしたり、制御したり、統一化したりするために多くの GPO を使っている組織であれば、かなりの量の GPO になってくるかと思います。私もよく GPO を作成しては PC に展開したりしていますが、かなり多いと把握していない GPO もあったりしますよね。

 

 

当然、使用されていない GPO は不要なのですが、どれが使用されていないか分からないという事もあるかと思います。その場合はどうやって調査するのでしょうか。

 

 

 

調査方法について

 

 

基本的に GPO は OU にリンクしないと機能しませんので、OU にリンクされているかどうかになると思います。

 

 

ただし、リンクされていなくても、今後使用する可能性がある GPO も中にはあるのかもしれませんが、これは人為的に確認するしかないと思います。

 

 

それではどうやって OU にリンクされていないか確認するのでしょうか。

 

 

 

OU にリンクされていない GPO を確認する(GUI)

 

 

サーバーマネージャーから [グループポリシーの管理] を起動します。

 

 

 

これは OU に GPO がリンクされている状態になります。

 

 

 

一方、これは OU に GPO がリンクされていない状態になります。

 

 

 

 

という事で、GUI で確認する方法についてはこれでできますが、大量の GPO がある場合はこれを一つ一つやっていくのはとても時間が無いし余りにも効率性に欠けると思います。ここは機械化してしまいましょう。

 

 

そこで PowerShell の登場です。PowerShell を使えば大量の GPO があっても OU にリンクされていない分を調査する事が可能です。

 

 

 

OU にリンクされていない GPO を確認する (PowerShell)

 

 

TechNet のスクリプトセンターに素晴らしいスクリプトがあったので使わせていただきました。データを整形、ファイル出力したりと一部追加したりしています。

 

 

Get Unlinked Group Policy Objects | TechNet スクリプトセンター

 

 

注意: 11 行目のコードの If(IsNotLinked( の後にカギカッコで xml を入れてください。(W0rdpress の問題でコードの一部が切り取られて表示されてしまう為。)

 

 

function IsNotLinked($xmldata){ 
    If ($xmldata.GPO.LinksTo -eq $null) { 
        Return $true 
    } 
     
    Return $false 
} 
 
$unlinkedGPOs = @() 
 
Get-GPO -All | ForEach { $gpo = $_ ; $_ | Get-GPOReport -ReportType xml | ForEach { If(IsNotLinked($_)){$unlinkedGPOs += $gpo} }} 
 
If ($unlinkedGPOs.Count -eq 0) { 
    "リンクされていないGPOはありません。" 
} 
Else{ 
    $result = $unlinkedGPOs | Select DisplayName,ID,CreationTime,ModificationTime
    $result | Export-Csv "C:\temp\unlinkedGPOs.txt" -NoTypeInformation -Encoding UTF8
}

 

 

 

上のスクリプトを実行し、エクスポートしたテキストファイルを開きましたところ、タブ区切りでデータが出力されていました。これで大量にあっても Excel にして管理する事ができるようになりました。

 

 

 

 

以上となります。いかがでしょうか。

 

 

これは便利ですね、GPO が増えるにつれ管理するのが大変なので、こういったスクリプトを使って手作業により手間を省き、効率的に管理できるのでとても良いと思います。

 

 

それでは最後までお読みいただきありがとうございました!