| Works
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運用も「手順書の通りに手作業」から脱却したいところ。