手法については、Copilot 優秀。
MS のシステムだから、MS の子に聞くのがいい。
コードの検証と、属性名についてのメモです。
ActiveDirectory ユーザーの一括インポート
Contents
Copilot に聞く
エクセルファイルからアクティブディレクトリにユーザーを
一括登録する方法は、PowerShellを使用するのが一般的です。
以下の手順で行うことができます。
エクセルファイルからアクティブディレクトリにユーザーを一括登録する方法は、PowerShellを使用するのが一般的です。以下の手順で行うことができます。
- エクセルファイルの準備: ユーザー情報を含むエクセルファイルを作成し、CSV形式で保存します。必要な情報には、ユーザー名、表示名、メールアドレス、パスワードなどが含まれます。
- PowerShellスクリプトの作成: 以下のようなPowerShellスクリプトを作成します。このスクリプトは、CSVファイルを読み込み、各ユーザーをアクティブディレクトリに追加します。
powershell
# CSVファイルのパスを設定
$csvPath = "C:\path\to\your\file.csv"
# CSVファイルを読み込む
$users = Import-Csv -Path $csvPath
# 各ユーザーをアクティブディレクトリに追加
foreach ($user in $users) {
New-ADUser `
-SamAccountName $user.SamAccountName `
-Name $user.Name `
-GivenName $user.GivenName `
-Surname $user.Surname `
-UserPrincipalName $user.UserPrincipalName `
-EmailAddress $user.EmailAddress `
-AccountPassword (ConvertTo-SecureString $user.Password -AsPlainText -Force) `
-Enabled $true `
-Path "OU=Users,DC=yourdomain,DC=com"
}
-----
- スクリプトの実行: 管理者権限でPowerShellを開き、作成したスクリプトを実行します。
検証してみる
CSV について
テスト用のCSV で「$users = Import-Csv -Path $csvPath」のふるまいを確認。
テスト用のCSV
name,pram1,pram2,pram3,pram4
user1,1a,2a,3a,4a
取り込み結果
PS C:\Users\Administrator> $test = Import-Csv -Path "C:\Users\Administrator\Desktop\test.csv";
PS C:\Users\Administrator> $test
name : user1
pram1 : 1a
pram2 : 2a
pram3 : 3a
pram4 : 4a
なるほど。最初の行がパラメータ名になるのね。
Powershell の内容
CSV で取り込んだ値を、foreach を使って繰り返し処理し、一括インポートを実現していると。
PowerShell コマンドレットを使用して Active Directory Domain Servicesを管理する
foreach ($user in $test) {
New-ADUser `
-SamAccountName $user.SamAccountName `
-Name $user.Name `
-GivenName $user.GivenName `
-Surname $user.Surname `
-UserPrincipalName $user.UserPrincipalName `
-EmailAddress $user.EmailAddress `
-AccountPassword (ConvertTo-SecureString $user.Password -AsPlainText -Force) `
-Enabled $true `
-Path $user.Path
}
各種パラメータについて
追加したい属性名について調査。
ADユーザーのパラメーター名を取得。
Get-ADUser -Identity logon-wins -Properties *
PS C:\Users\Administrator> Get-ADUser -Identity logon-wins -Properties *
AccountExpirationDate :
accountExpires : 9223372036854775807
AccountLockoutTime :
AccountNotDelegated : False
AllowReversiblePasswordEncryption : False
AuthenticationPolicy : {}
AuthenticationPolicySilo : {}
BadLogonCount : 0
badPasswordTime : 0
badPwdCount : 0
c : JP
CannotChangePassword : False
CanonicalName : beccou.local/test/姓 名 イニシャル.(フルネーム)
Certificates : {}
City : 市区町村
CN : 姓 名 イニシャル.(フルネーム)
co : 日本
codePage : 0
Company : 会社名
CompoundIdentitySupported : {}
Country : JP
countryCode : 392
Created : 2024/11/03 10:22:55
createTimeStamp : 2024/11/03 10:22:55
Deleted :
Department : 部署
Description : 説明
DisplayName : 姓 名 イニシャル.(フルネーム)
DistinguishedName : CN=姓 名 イニシャル.(フルネーム),OU=test,DC=beccou,DC=local
Division :
DoesNotRequirePreAuth : False
dSCorePropagationData : {1601/01/01 9:00:00}
EmailAddress : 電子メール
EmployeeID :
EmployeeNumber :
Enabled : True
facsimileTelephoneNumber : 44444444444
Fax : 44444444444
GivenName : 名
HomeDirectory : C:\ADDS\USER\logon
HomedirRequired : False
HomeDrive :
HomePage : WEBページ
HomePhone : 11111111111
Initials : イニシャル
instanceType : 4
ipPhone : 55555555555
isDeleted :
KerberosEncryptionType : {}
l : 市区町村
LastBadPasswordAttempt :
LastKnownParent :
lastLogoff : 0
lastLogon : 0
LastLogonDate :
LockedOut : False
lockoutTime : 0
logonCount : 0
LogonWorkstations :
mail : 電子メール
Manager :
MemberOf : {}
MNSLogonAccount : False
mobile : 33333333333
MobilePhone : 33333333333
Modified : 2024/11/03 11:43:33
modifyTimeStamp : 2024/11/03 11:43:33
msDS-User-Account-Control-Computed : 0
Name : 姓 名 イニシャル.(フルネーム)
nTSecurityDescriptor : System.DirectoryServices.ActiveDirectorySecurity
ObjectCategory : CN=Person,CN=Schema,CN=Configuration,DC=beccou,DC=local
ObjectClass : user
ObjectGUID : d0e992ad-a0ca-42d5-a95f-c0c0f8774891
objectSid : S-1-5-21-2458373074-3726635584-1881379738-1148
Office : 事業所
OfficePhone : 電話番号
Organization :
OtherName :
pager : 22222222222
PasswordExpired : False
PasswordLastSet : 2024/11/03 10:22:55
PasswordNeverExpires : True
PasswordNotRequired : False
physicalDeliveryOfficeName : 事業所
POBox : 私書箱
PostalCode : 郵便番号
postOfficeBox : {私書箱}
PrimaryGroup : CN=Domain Users,CN=Users,DC=beccou,DC=local
primaryGroupID : 513
PrincipalsAllowedToDelegateToAccount : {}
ProfilePath : C:\ADDS\USER\logon
ProtectedFromAccidentalDeletion : False
pwdLastSet : 133750705751820909
SamAccountName : logon-wins
sAMAccountType : 805306368
ScriptPath : user-logon.bat
sDRightsEffective : 15
ServicePrincipalNames : {}
SID : S-1-5-21-2458373074-3726635584-1881379738-1148
SIDHistory : {}
SmartcardLogonRequired : False
sn : 姓
st : 都道府県
State : 都道府県
StreetAddress : 番地
Surname : 姓
telephoneNumber : 電話番号
Title : 役職
TrustedForDelegation : False
TrustedToAuthForDelegation : False
UseDESKeyOnly : False
userAccountControl : 66048
userCertificate : {}
UserPrincipalName : logon@beccou.local
uSNChanged : 25865
uSNCreated : 25844
whenChanged : 2024/11/03 11:43:33
whenCreated : 2024/11/03 10:22:55
wWWHomePage : WEBページ
PS C:\Users\Administrator>
パスワードについては、「-AccountPassword」で指定する。
インポート先を指定する「Path」の値については、lap.exe でも調べられる。
【ldp.exe】を使用して、LDAP 接続の確認をする。 – .zapping
AD を管理しているユーザーなら、ログイン情報でバインドしてツリーを参照できる。
読み込みテスト
test.csv
SamAccountName,Name,GivenName,Surname,UserPrincipalName,EmailAddress,Password,Path
user1,Name1,GivenName1,Surname1,UserPrincipalName1,test@beccou.local,P@ssw0rd,”””OU=test,DC=beccou,DC=local”””
user2,Name2,GivenName2,Surname2,UserPrincipalName2,test@beccou.local,P@ssw0rd,”OU=test,DC=beccou,DC=local”
user3,Name3,GivenName3,Surname3,UserPrincipalName3,test@beccou.local,P@ssw0rd,”OU=test,DC=beccou,DC=local”
user4,Name4,GivenName4,Surname4,UserPrincipalName4,test@beccou.local,P@ssw0rd,”OU=test,DC=beccou,DC=local”
user5,Name5,GivenName5,Surname5,UserPrincipalName5,test@beccou.local,P@ssw0rd,”OU=test,DC=beccou,DC=local”
user6,Name6,GivenName6,Surname6,UserPrincipalName6,test@beccou.local,P@ssw0rd,”OU=test,DC=beccou,DC=local”
user7,Name7,GivenName7,Surname7,UserPrincipalName7,test@beccou.local,P@ssw0rd,”OU=test,DC=beccou,DC=local”
user8,Name8,GivenName8,Surname8,UserPrincipalName8,test@beccou.local,P@ssw0rd,”OU=test,DC=beccou,DC=local”
user9,Name9,GivenName9,Surname9,UserPrincipalName9,test@beccou.local,P@ssw0rd,”OU=test,DC=beccou,DC=local”
コマンドの実行
追加を確認。