どうもミツシマです。

今回はローカルユーザーの一括登録を検証しましたので、今回はADユーザーの一括登録を検証してみました。

検証したOS:WindowsServer2016


今までは「dsadd」コマンドでやっていましたが、Powershellの「New-ADUser」コマンドで検証してみました。


用意するファイルは「ADUserAccout.csv」・「AddADUser.ps1」・「AddADGroupMember.ps1」です。


「ADUserAccout.csv」
Path,Name,Surname,GivenName,Displayname,Description,UserPrincipalName,SamAccountName,AccountPassword,ADGroup1,ADGroup2,ADGroup3,ADGroup4,ADGroup5
"OU=OU1,OU=userOU,OU=TEST",testuser01,test,太郎01,test 太郎01,testユーザー01,testuser01@local.mitsushima.work,testuser01,p@ssword01,営業部Gr,総務部Gr,,,
"OU=OU2,OU=userOU,OU=TEST",testuser02,test,太郎02,test 太郎02,testユーザー02,testuser02@local.mitsushima.work,testuser02,p@ssword02,総務部Gr,,,,
"OU=OU1,OU=userOU,OU=TEST",testuser03,test,太郎03,test 太郎03,testユーザー03,testuser03@local.mitsushima.work,testuser03,p@ssword03,,,営業部Gr,総務部Gr,
"OU=OU2,OU=userOU,OU=TEST",testuser04,test,太郎04,test 太郎04,testユーザー04,testuser04@local.mitsushima.work,testuser04,p@ssword04,,,総務部Gr,,
(続く)


「AddADUser.ps1」の中身
#CSVファイルを展開し、変数に取得
$CSVPath = $PSScriptRoot + "¥ADUserAccout.csv"
#Write-Output $CSVPath
$SetUserInfo = Import-Csv -Path $CSVPath -Encoding Default
#Write-Output $SetUserInfo

#ドメイン情報
$DCPath = ",DC=local,DC=mitsushima,DC=work"

Write-Output 'ADユーザーを一括登録中です。コマンド完了までお待ちください。'
$i = 0

#CSVファイル内のユーザーを一括登録(パスワード無期限)
foreach($info in $SetUserInfo){

    $OUPath = $Info.Path + $DCPath

    New-ADUser -Name $info.Name `
    -Surname $info.Surname `
    -GivenName $info.GivenName `
    -Displayname $info.Displayname `
    -Description $info.Description `
    -UserPrincipalName $info.UserPrincipalName `
    -SamAccountName $info.SamAccountName `
    -AccountPassword (ConvertTo-SecureString $info.AccountPassword -AsPlainText -Force) `
    -Path $OUPath `
    -PasswordNeverExpires $True `
    -Enabled $True

    $i += 1

    Write-Output $i'件登録完了'
}

Write-Output 'ADユーザー一括登録完了 '
Write-Output $i'件登録実施しました。'



「AddADGroupMember.ps1」の中身
#CSVファイルを展開し、変数に取得
$CSVPath = $PSScriptRoot + "¥ADUserAccout.csv"
#Write-Output $CSVPath
$SetUserInfo = Import-Csv -Path $CSVPath -Encoding Default
#Write-Output $SetUserInfo

Write-Output 'ADグループ登録中・・・・'

#CSVファイルで指定されたグループにユーザーを登録(最大5グループまで)
foreach($info in $SetUserInfo){
$UserName = $Info.Name
$ADGroup1 = $Info.ADGroup1
$ADGroup2 = $Info.ADGroup2
$ADGroup3 = $Info.ADGroup3
$ADGroup4 = $Info.ADGroup4
$ADGroup5 = $Info.ADGroup5

Write-Output $UserName
Write-Output $ADGroup1
Write-Output $ADGroup2
Write-Output $ADGroup3
Write-Output $ADGroup4
Write-Output $ADGroup5

    If (-Not[string]::IsNullOrEmpty($ADGroup1)){
        Add-ADGroupMember -Identity $ADGroup1 -Members $UserName
    }

    If (-Not[string]::IsNullOrEmpty($ADGroup2)){
        Add-ADGroupMember -Identity $ADGroup2 -Members $UserName
    }

    If (-Not[string]::IsNullOrEmpty($ADGroup3)){
        Add-ADGroupMember -Identity $ADGroup3 -Members $UserName
    }

    If (-Not[string]::IsNullOrEmpty($ADGroup4)){
        Add-ADGroupMember -Identity $ADGroup4 -Members $UserName
    }

    If (-Not[string]::IsNullOrEmpty($ADGroup5)){
        Add-ADGroupMember -Identity $ADGroup5 -Members $UserName
    }
}

Write-Output 'コマンド完了しました。'



<CSVファイルの対応表について>
①Path = 所属OU
②Name = ユーザーアカウント名
③Surname = 性
④GivenName = 名
⑤Displayname = 表示名
⑥Description = 説明
⑦UserPrincipalName = ユーザーログオン名
⑧SamAccountName = ユーザーログオン名(WIndows2000より前)
⑨AccountPassword = パスワード
⑩ADGroup1 = 所属するグループ1 ※(空白でも可)
⑪ADGroup2 = 所属するグループ2 ※(空白でも可)
⑫ADGroup3 = 所属するグループ3 ※(空白でも可)
⑬ADGroup4 = 所属するグループ4 ※(空白でも可)
⑭ADGroup5 = 所属するグループ5 ※(空白でも可)
スクリーンショット 2019-05-26 5.34.12
スクリーンショット 2019-05-26 5.35.50

スクリーンショット 2019-05-26 5.36.32


<AddADUser.ps1の解説>
今回、ADのドメインは「local.mitsushima.work」というものでテストしています。
その為、実際使用する際には「$DCPath = ",DC=local,DC=mitsushima,DC=work"」を書き換えて実行して下さい。
また、ADのグループについては実行前に作成が必須です。

<実行方法について>
CSVファイルの中身を編集しましたら、最後にCSVファイルを念のためメモ帳で開き直し、文字コードを「UTF-8」に変換して保存する。
※一応「Import-Csv」する際に「-Encoding Default」としてあるので、「UTF-8」ではなくても文字化けしないはずですが、念のための処理です。
 Excelで編集することが多いと思いますが、検証では「UTF-8」に直さなくても文字化けしませんでした。

その後、上記3つのファイルを同じフォルダ階層に配置した上で、Powershellを管理者として実行します。
「cd」コマンドで配置したファイルのカレントディレクトリまで移動し、「AddADUser.ps1」と「AddADGroupMember.ps1」を順番に実行します。
※Powershellでファイルを実行する際には「.\」をファイル名の前に付与すると実行出来ます。
 (例)「.\AddADUser.ps1」

また、今回は「パスワード無期限」で作成されるパラメータですが、
不要であれば「-PasswordNeverExpires $False」にしてもらえればOKです。
他にも細かいパラメータが必要であれば追加して下さい。
※とりあえず最低限必要なパラメータは追加したつもりです。


後は実際に作成されたユーザーを確認して完了です。


で、ローカルユーザーの時と同じように意図したグループに所属したかを確認したいので、グループメンバーを書き出すps1ファイルも作成しました。
今回はローカルグループの時と違って、特定のグループのみ書き出すようにするためにCSVファイルも準備しました。
(すべてのグループ書き出すと不要なグループが多くなってしまうので・・・)


ADGroupList.csv
ADGroupName
Domain Users
営業部Gr
総務部Gr



GetADGroupMember.ps1
#出力結果を吐き出すCSVファイルのパスを変数に取得
$ResultFoler = $PSScriptRoot + "¥GroupMember"
$CSVPath = $PSScriptRoot + "¥ADGroupList.csv"
#Write-Output $CSVPath

#出力先にフォルダーがなければ作成します。(実行したカレントディレクトリ直下に「GroupMember」フォルダを作成します。)
If(Test-Path $ResultFoler){
    Write-Output "GroupMemberフォルダが存在します。"
}else{
    Write-Output "GroupMemberフォルダがないため、作成します。"
    New-Item $ResultFoler -ItemType Directory
}

#CSVファイルを展開し、変数に取得
$ADGroupList = Import-Csv -Path $CSVPath -Encoding Default

#グループメンバーの情報を取得し、CSVファイルに出力
foreach($List in $ADGroupList){
    $ADGroupName = $List.ADGroupName
    $ResultCsv = $ResultFoler + "¥" + $ADGroupName + ".csv"
    Write-Output $ADGroupName
    Get-ADGroupMember -Identity $ADGroupName | select -Property name,distinguishedName | Export-Csv -path $ResultCsv -Encoding Default -NoTypeInformation
}



「ADGroupList.csv」と「GetADGroupMember.ps1」を同じフォルダ階層に配置して実行します。
今回は「Domain Users」・「営業部Gr」・「総務部Gr」の3つのグループのメンバーを書き出すようにCSVファイルを作成しています。

「GetADGroupMember.ps1」が配置されたカレントディレクトリ上に「GroupMember」フォルダを作成し、その中にそれぞれのADグループ名のcsvファイルで所属するユーザーを書き出します。
※ユーザー名と所属OUを書き出しています。



また、前回と同様に削除するps1ファイルも作成しました。


DeleteADUser.ps1
#CSVファイルを展開し、変数に取得
$CSVPath = $PSScriptRoot + "¥ADUserAccout.csv"
#Write-Output $CSVPath
$SetUserInfo = Import-Csv -Path $CSVPath -Encoding Default
#Write-Output $SetUserInfo

#CSVファイルで指定されたADユーザーを一括削除
foreach($Info in $SetUserInfo){

    $UserName = $Info.Name
    Write-Output $UserName'を削除します'
    Get-ADUser $UserName | Remove-ADUser -Confirm:$false

}



プロンプトで許可等求められずに削除されますので、実行前は注意して下さい。

最後に各ファイルをリンクにまとめました。
(文字化けしていたらすいません!!!)
ADUserAccout.csv
AddADUser.ps1
AddADGroupMember.ps1
ADGroupList.csv
GetADGroupMember.ps1
DeleteADUser.ps1


スポンサードリンク