どうもミツシマです。
今回はローカルユーザーの一括登録を検証しましたので、今回はADユーザーの一括登録を検証してみました。
検証したOS:WindowsServer2016
今までは「dsadd」コマンドでやっていましたが、Powershellの「New-ADUser」コマンドで検証してみました。
用意するファイルは「ADUserAccout.csv」・「AddADUser.ps1」・「AddADGroupMember.ps1」です。
「ADUserAccout.csv」
「AddADUser.ps1」の中身
「AddADGroupMember.ps1」の中身
<AddADUser.ps1の解説>
今回、ADのドメインは「local.mitsushima.work」というものでテストしています。
その為、実際使用する際には「$DCPath = ",DC=local,DC=mitsushima,DC=work"」を書き換えて実行して下さい。
また、ADのグループについては実行前に作成が必須です。
で、ローカルユーザーの時と同じように意図したグループに所属したかを確認したいので、グループメンバーを書き出すps1ファイルも作成しました。
今回はローカルグループの時と違って、特定のグループのみ書き出すようにするためにCSVファイルも準備しました。
(すべてのグループ書き出すと不要なグループが多くなってしまうので・・・)
ADGroupList.csv
GetADGroupMember.ps1
「ADGroupList.csv」と「GetADGroupMember.ps1」を同じフォルダ階層に配置して実行します。
今回は「Domain Users」・「営業部Gr」・「総務部Gr」の3つのグループのメンバーを書き出すようにCSVファイルを作成しています。
「GetADGroupMember.ps1」が配置されたカレントディレクトリ上に「GroupMember」フォルダを作成し、その中にそれぞれのADグループ名のcsvファイルで所属するユーザーを書き出します。
※ユーザー名と所属OUを書き出しています。
また、前回と同様に削除するps1ファイルも作成しました。
DeleteADUser.ps1
最後に各ファイルをリンクにまとめました。
(文字化けしていたらすいません!!!)
ADUserAccout.csv
AddADUser.ps1
AddADGroupMember.ps1
ADGroupList.csv
GetADGroupMember.ps1
DeleteADUser.ps1
今回はローカルユーザーの一括登録を検証しましたので、今回は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 ※(空白でも可)
①Path = 所属OU
②Name = ユーザーアカウント名
③Surname = 性
④GivenName = 名
⑤Displayname = 表示名
⑥Description = 説明
⑦UserPrincipalName = ユーザーログオン名
⑧SamAccountName = ユーザーログオン名(WIndows2000より前)
⑨AccountPassword = パスワード
⑩ADGroup1 = 所属するグループ1 ※(空白でも可)
⑪ADGroup2 = 所属するグループ2 ※(空白でも可)
⑫ADGroup3 = 所属するグループ3 ※(空白でも可)
⑬ADGroup4 = 所属するグループ4 ※(空白でも可)
⑭ADGroup5 = 所属するグループ5 ※(空白でも可)
<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です。
他にも細かいパラメータが必要であれば追加して下さい。
※とりあえず最低限必要なパラメータは追加したつもりです。
不要であれば「-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
スポンサードリンク
コメント