URAMIRAIKAN

1020のなれの果て (since 2005.6.19)

Active Directoryで使われていないユーザーとOUを削除する

 Active Directoryをちょっと変わった使い方をしている所からの相談で、勉強がてらにいろいろとPowerShellスクリプトを作っていました。
 その中の一つで、「OU内のドメインユーザーが全て無効になっていたらOUごと削除する」というもの。
 あまり他での使い道はないかな。

 起点になるOUの配下にあるOUを検索し、その中のユーザーが全て無効化されている場合はユーザー削除とOU削除をします。一つでも有効なユーザーがあれば何もしません。
 また、特定のOUは除外します。

$BaseOu = "OU=Root Div,DC=example,DC=local" $ChildOus = Get-ADOrganizationalUnit -Filter "*" -SearchBase $BaseOu -SearchScope Subtree :outer foreach ($ChildOu in $ChildOus) { if ($ChildOu.Name -eq "Root Div") {continue} if ($ChildOu.Name -eq "Exclude Div") {continue} $OuUsers = Get-ADUser -Filter "*" -SearchBase $ChildOu.DistinguishedName foreach ($OuUser in $OuUsers) { if ($OuUser.Enabled) { continue outer } } $OuUsers | Remove-ADUser -Confirm:$false Set-ADOrganizationalUnit -Identity $ChildOu.DistinguishedName -ProtectedFromAccidentalDeletion $false Remove-ADOrganizationalUnit -Identity $ChildOu.DistinguishedName -Confirm:$false } exit

 PowerShellだとActive Directory用のコマンドレットが揃っているので、あまり深く考えずに作れてしまうのですよね。AD運用も「手順書の通りに手作業」から脱却したいところ。