サイトアイコン 協栄情報ブログ

Active Directoryユーザ削除を自動化する:PowerShellで一括削除を安全に実行する方法

こんにちは、ishikawaです。
今回はADユーザの削除についての記事を執筆いたします。

はじめに

Active Directory環境では、ユーザの入れ替えや退職対応などでアカウントの削除作業が頻繁に発生します。
手動でGUI操作を繰り返すのは非効率で、削除漏れや操作ミスの原因にもなりがちです。
本記事では、PowerShellスクリプトを使ってADユーザを一括削除する方法を紹介します。

第1章:手動削除の限界

Active Directoryユーザを手動で削除する場合、Active Directoryユーザーを一人ずつ削除していく必要があります。
ユーザ数が少なければ問題ありませんが、数十〜数百人単位になると、削除対象の確認やOU(組織単位)の特定に時間がかかり、ヒューマンエラーのリスクも高まります。
案件によっては再鑑者の工数も二重に発生するため、令和の今、そんなことに時間を掛けている余裕はありません。

第2章:スクリプトで安全に一括削除する仕組み

今回紹介するスクリプトのポイントは、「対象ユーザを明示的に指定して安全に削除する設計」です。
スクリプトの概要は次の通りです。

・削除対象のユーザ一覧をCSVまたはTXTで用意(例:users_to_delete.txt)
・スクリプトで1行ずつユーザ名を読み込み、ADから削除

また、(自明ではありますが)Remove-ADUser コマンドレットを使用するため、
Active Directoryモジュールがインストールされた環境(例:ADサーバまたは管理端末)で実行します。
なお、ドメイン管理者または同等の権限が必要な点には注意が必要です。

この仕組みにより、削除対象を明確にしながら一括で安全に削除することができます。

第3章:スクリプト例(ログ出力付きで安全に実行)

ここでは、実際に使用しているスクリプト例を紹介します。
Powershell上でそのまま実行できる形式で、リージョン単位での削除を安全に行う設計です。

手順1
削除対象ユーザをcsvファイルに記載

DeleteUsers.csv

※本手順だとCドライブ直下に格納しています
手順2
Powershellで以下実行する。以上

Import-Module ActiveDirectory
$csvPath = "C:\DeleteUsers.csv"
$users = Import-Csv -Path $csvPath
foreach ($user in $users) {
    try {
        $account = $user.sAMAccountName
        $adUser = Get-ADUser -LDAPFilter "(sAMAccountName=$account)" -Properties ProtectedFromAccidentalDeletion
        if (-not $adUser) {throw "User not found: $account" }
        Write-Host "Deleting user: $account ($($adUser.DistinguishedName))"
        if ($adUser.ProtectedFromAccidentalDeletion) {
            Set-ADObject -Identity $adUser.DistinguishedName -ProtectedFromAccidentalDeletion:$false -Confirm:$false
        }
        Remove-ADUser -Identity $adUser.DistinguishedName -Confirm:$false
    } catch {
        Write-Warning "Failed to delete user: $($user.sAMAccountName) - $_"
    }
}

最後に

以上、Active DirectoryユーザをPowerShellで一括削除する方法を紹介しました。
シンプルな構成ながら、運用効率を大幅に向上させることができます。
ぜひ参考いただければ幸いです。

モバイルバージョンを終了