コンテンツへスキップ

ActiveDirectory ユーザーの一括インポート

手法については、Copilot 優秀。
MS のシステムだから、MS の子に聞くのがいい。

コードの検証と、属性名についてのメモです。

ActiveDirectory ユーザーの一括インポート

Copilot に聞く

エクセルファイルからアクティブディレクトリにユーザーを
一括登録する方法は、PowerShellを使用するのが一般的です。
以下の手順で行うことができます。

エクセルファイルからアクティブディレクトリにユーザーを一括登録する方法は、PowerShellを使用するのが一般的です。以下の手順で行うことができます。

  1. エクセルファイルの準備: ユーザー情報を含むエクセルファイルを作成し、CSV形式で保存します。必要な情報には、ユーザー名、表示名、メールアドレス、パスワードなどが含まれます。
  2. 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"
}
-----
  1. スクリプトの実行: 管理者権限で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”

コマンドの実行

追加を確認。

(Visited 6 times, 1 visits today)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です