CSVを使ったユーザー括登録スクリプト【Powershell】


アカウント登録を手作業でやるのが面倒なので、いろいろ参考にしつつ作りました。

UserAcountInfomation.csv
SurName,GivenName,DisplayName,UserName,Domain,Profile,OU,Group1,Group2,Group3,Group4,Group5
スクリプト確認ユーザ,01,スクリプト確認ユーザ01,ScriptUser01,JahsDev2.local,,TestOU,DNSAdmins,Protected Users,TestGroup1,TestGroup2,TestGroup3
スクリプト確認ユーザ,02,スクリプト確認ユーザ02,ScriptUser02,JahsDev2.local,,TestOU,DNSAdmins,Protected Users,TestGroup1,TestGroup2,TestGroup3
スクリプト確認ユーザ,03,スクリプト確認ユーザ03,ScriptUser03,JahsDev2.local,,TestOU,DNSAdmins,Protected Users,TestGroup1,TestGroup2,TestGroup3
test

Import-Module ActiveDirectory
$CSV_FilePath = ".\UserAcountInfomation.csv"

Test-Path $CSV_FilePath
switch ($?){
    True{
    #真判定処理
        $Password = "Password!2#"
         Import-Csv $CSV_FilePath | %{
            $AddADUsers = @{
                Name = $_.UserName                                                         #ユーザアカウント名
                Surname = $_.SurName                                                       #姓
                GivenName = $_.GivenName                                                   #名
                DisplayName = $_.DisplayName                                               #表示名
#                msDS-PhoneticLastName = $_.FirstName                                       #姓(カナ)
#                msDS-PhoneticFirstName = $_.LustName                                       #名(カナ)
#                msDS-PhoneticDisplayName = ($_.FirstName + ' ' + $_.LustName)              #フルネーム(カナ)
                UserPrincipalName = $_.UserName + '@' + $_.Domain                          #ユーザプリシンパル名
                AccountPassword = (ConvertTo-SecureString -AsPlainText $Password -Force)   #パスワード
                ChangePasswordAtLogon = $True                                              #次回ログオン時にパスワード変更する
                Enabled = $True                                                            #ユーザ有効化  
            }
            New-ADUser @AddADUsers  # アカウント追加
        }
        Import-Csv $CSV_FilePath | ForEach-Object{
            Add-ADGroupMember -Identity $_.Group1 -Members $_.UserName
            Add-ADGroupMember -Identity $_.Group2 -Members $_.UserName
            Add-ADGroupMember -Identity $_.Group3 -Members $_.UserName
            Add-ADGroupMember -Identity $_.Group4 -Members $_.UserName
            Add-ADGroupMember -Identity $_.Group5 -Members $_.UserName
        }
    }
    False{
    #偽判定処理
        Write-Host(" Error:CSVファイルが存在しません。 ")
        pause
    }
    Default{
    #判定外処理
    Write-Host(" 例外処理 ")
        pause
    }
}

※CSV上にOUの項目がありますが、一括で移動したいなーという理由で作ったは良いものの
 ドメインの情報を「 . 」毎に分割したり、OUは変数的に入れたりなど考えたら面倒になって
 実装してないです。
※最初からグループは5つまで設定可能です。
※カナはあってもなくてもいいのでコメントアウトにしてます。

【参考資料】
https://syachiku.net/ad-powershell-add-csv/
https://qiita.com/mindwood/items/6c4324604bec234f050c