Categories: OS

PowerShellで劇的効率化!Active Directory管理を自動化する方法と活用例

Active Directory(AD)の管理は、ユーザーの追加やグループ管理、パスワードリセットなど、日々多くの作業が発生します。これらを手動で行っていると、時間がかかる上にヒューマンエラーのリスクもあります。そこで活用したいのが「PowerShell」です。PowerShellを使えば、煩雑なAD作業をスクリプトで一括処理でき、管理効率が大幅に向上します。
本記事では、PowerShellでActive Directoryを効率的に管理するための基本から応用的なスクリプト例まで、実務で役立つノウハウを3000文字以上で詳しく解説します。


PowerShellによるActive Directory管理のメリットとは

PowerShellはWindows標準のスクリプト言語で、AD環境との親和性が非常に高いのが特徴です。
「ActiveDirectoryモジュール」を利用することで、GUIでは数分かかる作業も数秒で完了させることが可能になります。

主なメリット:

  • 作業の自動化による効率化
  • ミスの削減
  • 同じ処理を大量に繰り返すのが容易
  • ログの記録と確認がしやすい

特に大規模な組織では、数百~数千人単位のユーザー管理が発生するため、PowerShellによる自動化は効果絶大です。


PowerShell環境の準備とADモジュールの読み込み

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スクリプトで定期業務を自動化する

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でAD管理を自動化しよう

PowerShellを使うことで、Active Directoryの管理作業を大幅に効率化できます。
特に定型業務のスクリプト化や一括処理は、管理者の作業時間を削減し、運用の安定性も高まります。

最初は小さなタスクから始めて、徐々に自動化の範囲を広げていくのがおすすめです。
慣れてくれば、PowerShellはIT管理の最強の武器になります。ぜひあなたの環境でも導入を検討してみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。