Active Directory(AD)の管理は、ユーザーの追加やグループ管理、パスワードリセットなど、日々多くの作業が発生します。これらを手動で行っていると、時間がかかる上にヒューマンエラーのリスクもあります。そこで活用したいのが「PowerShell」です。PowerShellを使えば、煩雑なAD作業をスクリプトで一括処理でき、管理効率が大幅に向上します。
本記事では、PowerShellでActive Directoryを効率的に管理するための基本から応用的なスクリプト例まで、実務で役立つノウハウを3000文字以上で詳しく解説します。
PowerShellはWindows標準のスクリプト言語で、AD環境との親和性が非常に高いのが特徴です。
「ActiveDirectoryモジュール」を利用することで、GUIでは数分かかる作業も数秒で完了させることが可能になります。
主なメリット:
特に大規模な組織では、数百~数千人単位のユーザー管理が発生するため、PowerShellによる自動化は効果絶大です。
PowerShellを使ってADを操作するには、まずモジュールのインポートが必要です。
以下の手順で設定します。
Import-Module ActiveDirectory
モジュールがインストールされていない場合は、Windowsの「RSAT(リモートサーバー管理ツール)」を有効化してください。Windows 10以降では以下で確認・追加できます。
Get-WindowsCapability -Name RSAT.ActiveDirectory* -Online
Add-WindowsCapability -Online -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"
Get-ADUser -Filter * -Properties DisplayName,Mail | Select-Object DisplayName,Mail
特定のOU配下だけを抽出したい場合は、-SearchBase
を追加します。
New-ADUser -Name "田中一郎" -GivenName "一郎" -Surname "田中" -SamAccountName "tanakaichiro" `
-UserPrincipalName "tanakaichiro@example.com" -AccountPassword (ConvertTo-SecureString "Password123!" -AsPlainText -Force) `
-Enabled $true -Path "OU=Users,DC=example,DC=com"
パスワードは必ずセキュア文字列として処理し、Enabled
を$true
に設定することで即時有効にできます。
CSVファイルを用いて一括登録する例です。
Import-Csv -Path "C:\scripts\users.csv" | ForEach-Object {
New-ADUser -Name $_.Name -GivenName $_.GivenName -Surname $_.Surname -SamAccountName $_.SamAccountName `
-UserPrincipalName $_.UPN -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) `
-Enabled $true -Path $_.OU
}
CSV例(users.csv):
Name,GivenName,Surname,SamAccountName,UPN,Password,OU
田中一郎,一郎,田中,tanakaichiro,tanakaichiro@example.com,Password123!,OU=Users,DC=example,DC=com
Set-ADAccountPassword -Identity "tanakaichiro" -NewPassword (ConvertTo-SecureString "NewPassword456!" -AsPlainText -Force) -Reset
Disable-ADAccount -Identity "tanakaichiro"
New-ADGroup -Name "MarketingTeam" -GroupScope Global -GroupCategory Security -Path "OU=Groups,DC=example,DC=com"
Add-ADGroupMember -Identity "MarketingTeam" -Members "tanakaichiro"
Remove-ADGroupMember -Identity "MarketingTeam" -Members "tanakaichiro" -Confirm:$false
PowerShellスクリプトをWindowsのタスクスケジューラに登録することで、毎週のアカウント棚卸しや未使用アカウントの無効化など、定型業務を完全自動化できます。
例:30日間ログオンしていないユーザーを無効化する
$threshold = (Get-Date).AddDays(-30)
Get-ADUser -Filter * -Properties LastLogonDate | Where-Object {
$_.LastLogonDate -lt $threshold -and $_.Enabled -eq $true
} | ForEach-Object {
Disable-ADAccount -Identity $_.SamAccountName
}
スクリプト内でログファイルを出力することで、作業の可視化・監査証跡が可能になります。
$logPath = "C:\scripts\log.txt"
"[$(Get-Date)] ユーザー無効化開始" | Out-File $logPath -Append
# 作業実行処理
"[$(Get-Date)] ユーザー無効化完了" | Out-File $logPath -Append
PowerShellを使うことで、Active Directoryの管理作業を大幅に効率化できます。
特に定型業務のスクリプト化や一括処理は、管理者の作業時間を削減し、運用の安定性も高まります。
最初は小さなタスクから始めて、徐々に自動化の範囲を広げていくのがおすすめです。
慣れてくれば、PowerShellはIT管理の最強の武器になります。ぜひあなたの環境でも導入を検討してみてください。