👥
Active Directory:CSV読み込んでユーザーの新規作成
オンプレAD環境でCSVを読み込んでアカウントを作成するするPowerShellを書いてみた。
前提条件
- ドメインコントローラーにコンソールかリモートデスクトップでログオンして操作する
- 管理者の PC から操作する場合は、Active Directory モジュールが使えること
- 移動対象OU配下内に同一名のOUが存在しないこと
スクリプトの内容
- アカウント情報が記載されたCSVの読み込み
- ユーザー、OU、セキュアグループの判定
- 移動先OUがあるか判定
- 正常なら、OUの移動、現所属グループ削除、移動後の所属グループ追加
読み込むCSVのレイアウト
文字コードは、Shift_JIS
ADUserList.csv
"Name","DisplayName","Surname","Givenname","OU","Group"
"test-user01","テストユーザー01","テスト","ユーザー01","testOU01","sec-test01"
レイアウトの説明
項目 | 説明 |
---|---|
Name | アカウント名 |
DisplayName | 表示名 |
Surname | 姓 |
Givenname | 名 |
OU | 所属OU |
Group | 所属グループ |
完成したスクリプト
New_ADUser.ps1
# CSVファイルの情報からADユーザを一括作成
Import-Module ActiveDirectory
# 読み込むファイルを指定
$CSVFile = "./ADUserList.csv"
# ベースOUを指定
# 例:"OU=User,DC=test,DC=com"
$SearchOU = "OU=〇〇,DC=〇〇,DC=〇〇"
# 共通パスワード
$PASSWD = "12345678"
# ドメイン名
$DOMAIN = "tesut.com"
# CSVの読み込み(Shift_JIS)
Import-Csv $CSVFile -Encoding Default | ForEach-Object {
# エラー判定用にデータ取得
# コンソールのエラーを非表示にする
$ErrorActionPreference = "silentlycontinue"
# ユーザーがいるか判定
# Get-ADUserでエラーだと「NULL」のまま
$UserJudg = $NULL
$TargetUser = $_.Name
$UserJudg = Get-ADUser -Identity $TargetUser
# SearchOU配下に異動先OUがあるか判定
# Get-ADOrganizationalUnitでエラーだと「NULL」のまま
$OUJudg = $NULL
$TargetOU = $_.OU
$OUJudg = Get-ADOrganizationalUnit -Filter 'Name -like $TargetOU' -SearchBase $SearchOU -SearchScope Subtree
# SearchOU配下に追加するGroupがあるか判定
# Get-ADGroupでエラーだと「NULL」のまま
$GroupJudg = $NULL
$TargetGroup = $_.Group
$GroupJudg = Get-ADGroup -Filter 'Name -like $TargetGroup' -SearchBase $SearchOU -SearchScope Subtree
# コンソールのエラーを再表示する
$ErrorActionPreference = "continue"
# ユーザーがいるか判定
if ($UserJudg -eq $NULL)
{
# SearchOU配下に所属OUがあるか判定
if($OUJudg -eq $NULL)
{
# TargetOUの打ち間違いエラー出力
Write-Host -NoNewline $TargetUser " の所属OU 「" $TargetOU "」はありません"
Write-Output ""
}
else
{
# ユーザー登録
New-ADUser -Path $OUJudg.DistinguishedName -Name $_.DisplayName `
-DisplayName $_.DisplayName `
-sAMAccountName $_.Name `
-Surname $_.Surname `
-Givenname $_.Givenname `
-UserPrincipalName ($_.Name+'@'+$DOMAIN) `
-AccountPassword (ConvertTo-SecureString -AsPlainText $PASSWD -Force) `
-ChangePasswordAtLogon $true `
-Enabled $true `
-PasswordNeverExpires $false
# Groupがあるか判定
if ($GroupJudg -eq $NULL)
{
# エラー出力
Write-Host -NoNewline $TargetUser " の追加Gruop 「" $TargetGroup "」はありません"
Write-Output ""
}
else
{
# グループ追加
Add-ADGroupMember -Identity $TargetGroup -Members $TargetUser
}
}
}
else
{
# エラー出力
Write-Host -NoNewline $TargetUser " はすでにいます"
Write-Output ""
}
}
Discussion