Active Directory(AD)を管理するうえで、複数のユーザーをまとめて作成・更新・無効化する作業は頻繁に発生します。GUIで1件ずつ操作するのは非効率ですが、PowerShellを使えばCSVファイルなどを元に一括処理が可能です。本記事では、実務で使えるPowerShellスクリプトとその手順を紹介します。
事前準備:Active Directoryモジュールの確認
まずはPowerShellでActive Directoryコマンドレットが使用可能か確認します。以下のようにモジュールがインストールされているかチェックしましょう。
Import-Module ActiveDirectory
モジュールが存在しない場合は、Windowsの「RSAT: Active Directory ツール」をインストールしてください。
CSVファイルでユーザー情報を管理
一括処理の対象となるユーザー情報はCSVファイルで管理するのが一般的です。以下はCSVのサンプル構成です。
"Name","SamAccountName","UserPrincipalName","OU","Action"
"田中 太郎","tanaka","tanaka@example.local","OU=Sales,DC=example,DC=local","create"
"佐藤 花子","sato","sato@example.local","OU=HR,DC=example,DC=local","disable"
Action列で「create」「update」「disable」などの処理を区別します。
ユーザーを一括作成するスクリプト
以下はCSVに基づいて新規ユーザーを作成するスクリプトの例です。
$users = Import-Csv "users.csv"
foreach ($user in $users) {
if ($user.Action -eq "create") {
New-ADUser -Name $user.Name `
-SamAccountName $user.SamAccountName `
-UserPrincipalName $user.UserPrincipalName `
-Path $user.OU `
-AccountPassword (ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force) `
-Enabled $true
}
}
パスワードは仮の値を設定していますが、本番環境では個別に生成・管理するようにしてください。
ユーザー情報を一括で更新するスクリプト
次に、既存ユーザーの情報を一括で変更したい場合の例を紹介します。
$users = Import-Csv "users.csv"
foreach ($user in $users) {
if ($user.Action -eq "update") {
Set-ADUser -Identity $user.SamAccountName `
-UserPrincipalName $user.UserPrincipalName `
-DisplayName $user.Name
}
}
更新対象の属性は用途に応じて変更してください。
ユーザーを一括で無効化するスクリプト
退職者や異動により一時的にアカウントを無効化するケースにも対応可能です。
$users = Import-Csv "users.csv"
foreach ($user in $users) {
if ($user.Action -eq "disable") {
Disable-ADAccount -Identity $user.SamAccountName
}
}
無効化されたアカウントは再度 Enable-ADAccount
で復元可能です。
まとめ
PowerShellを使えば、Active Directoryのユーザー管理を柔軟かつ高速に行うことができます。CSVによる一括処理を活用すれば、数百人規模の新入社員対応や一斉異動時の管理もスムーズにこなせます。日常的な運用業務の自動化にも非常に有効ですので、ぜひ活用してみてください。