Active Directory’de yeni kullanıcı eklemenin IT ekibinde bulunan bir personel için herhangi bir zorluğu yoktur. Fakat eklenecek kullanıcı sayısı çok fazla ise bu işlem IT ekibine büyük bir iş yükü getirmektedir. Bu nedenle belirli bir listede bulunan kullanıcıların toplu olarak oluşturabilmesi için hazırlanacak bir PowerShell Script, IT ekibinin işini oldukça kolaylaştıracaktır.
Active Directory’de toplu kullanıcı oluşturma işlemini hızlı bir şekilde yapabilmemiz için aşağıdaki dosyalara ihtiyacımız vardır.
1. Users.csv
Bu dosya aşağıdaki şekilde oluşturulmalıdır.
Yeni bir Excel Çalışma Sayfası açılır ve aşağıdaki formatta girişler yapılır.

Bu liste Dosya -> Farklı Kaydet seçilerek CSV (Virgülle Ayrılmış) (*.csv) uzantısıyla kaydedilir. Eğer bilgiler türkçe karakter içeriyorsa bu karakterlerin sorunsuz kaydedilmesi için CSV UTF-8 (Virgülle Ayrılmış) (*.csv) uzantısı ile kaydedilmesi gerekir.

Aşağıdaki uyarıya Evet denilerek kaydetme işlemi tamamlanır.

Oluşturulan .csv uzantılı dosya Notepad ile açıldığında aşağıdaki formatta olması gerekmektedir.

2. CreateUser.ps1
Kullanıcı oluştururken kullanılacak PowerShell Script dosyasının içeriği aşağıdaki gibidir.
Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter ";" -Path ".\Users.csv"
foreach ($User in $Users)
{
$OU = "OU=NewUsers,OU=EMRES,DC=emres,DC=com"
$Password = $User.Password
$UserFirstname = $user.GivenName
$FirstLetterFirstname = $UserFirstname.substring(0,1)
$UPN = $User.SamAccountName + "@" + $User.Domain
New-ADUser -Name $User.DisplayName -SamAccountName $User.SamAccountName -Description $User.Description -UserPrincipalName $UPN -DisplayName $User.DisplayName -GivenName $User.GivenName -Surname $User.SurName -EMailAddress $User.Mail -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -Path $OU }
PowerShell Script üzerinde dikkat edilecek nokta kullanıcıların hangi OU altında oluşturulacağıdır. Kullanıcıların oluşturulacağı OU scriptin 5. satırında belirtilmiştir.
$OU = "OU=NewUsers,OU=EMRES,DC=emres,DC=com"
Bu PowerShell Script ile oluşturulan kullanıcılarda eklenen alanlar aşağıdaki gibidir :
- Name
- SamAccountName
- Description
- UserPrincipalName
- DisplayName
- GivenName
- Surname
- EmailAddress
Users.csv dosyasına sütun olarak eklenip PowerShell Script’te de ilgili yerlere eklenerek otomatik olarak kullanıcı bilgilerine eklenenebilecek bilgilerin tamamı ise aşağıdaki gibidir :
- Name
- AccountExpirationDate
- AccountNotDelegated
- AccountPassword
- AllowReversiblePasswordEncryption
- AuthType
- CannotChangePassword
- Certificates
- ChangePasswordAtLogon
- City
- Company
- Country
- Credential
- Department
- Description
- DisplayName
- Division
- EmailAddress
- EmployeeID
- EmployeeNumber
- Enabled
- Fax
- GivenName
- HomeDirectory
- HomeDrive
- HomePage
- HomePhone
- Initials
- Instance
- LogonWorkstations
- Manager
- MobilePhone
- Office
- OfficePhone
- Organization
- OtherAttributes
- OtherName
- PassThru
- PasswordNeverExpires
- PasswordNotRequired
- Path
- POBox
- PostalCode
- ProfilePath
- SamAccountName
- ScriptPath
- Server
- ServicePrincipalNames
- SmartcardLogonRequired
- State
- StreetAddress
- Surname
- Title
- TrustedForDelegation
- Type
- UserPrincipalName
Bu iki dosya da hazırlandıktan sonra dosyalar tek bir klasöre taşınıp script yönetici haklarıyla çalıştırılır.


Böylece Active Directory ortamında bir kullanıcı listesi hazırlanarak toplu kullanıcı oluşturma işlemi tamamlanmış olur.

Faydalı olması dileğiyle…
Merhaba,
Attribute bölümüne tckimlikno ekledik. Fakat toplu kullanıcı açmak istediğimizde tckimlikno alanına veri girişinde hata vermektedir. Bu konuda yardımcı olabilir misiniz
Merhabalar,
Aldığınız hatayı iletebilirseniz yardımcı olmaya çalışırım.
Merhaba,
Buraya ekran görüntüsü atamadığım için iletişimde yer alan mail adresinize nerede hata yaşadığımın ekran görüntülerini attım.
Merhabalar,
Kullanıcı oluşturulurken değer eklemeye çalıştığınız attribute, şema genişletilmesi ile sonradan oluşturulan özel bir attribute’tur. Bu nedenle bu özel attribute’e (tCKimlikNo) veri eklenebilmesi için parametreyi
-tCKimlikNo $User.TCKN
yerine
-OtherAttributes @{‘tCKimlikNo’ = $User.TCKN}
şeklinde girip tekrar deneyebilir misiniz?
Merhaba,
Yukarıda verdiğiniz -OtherAttributes @{‘tCKimlikNo’ = $User.TCKN} kod ile sorun çözüme kavuştu.
Teşekkür ederim.
Hocam , Bu kodu çalıştırıyorum fakat hata veriyor.
Import-Module ActiveDirectory $Users = Import-Csv -Delimiter “;””-Path “.\deneme.csv”
foreach ($User in $Users)
{
$OU = “OU=KULLANICI,OU=ESKAVALVE,DC=ESKAVALVE,DC=LOCAL”
$Password = $User.Password
$UserFirstname = $user.GivenName
$FirstLetterFirstname = $UserFirstname.substring(0,1)
$UPN = $User.sAMAccountName + “@” + $User.Domain
New-ADUser -Name $User.DisplayName -sAMAccountName $User.sAMAccountName -Description $User.Description -UserPrincipalName $UPN -DisplayName $User.DisplayName -GivenName $User.GivenName -Surname $User.SurName -EMailAddress $User.Mail -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -Path $OU }
Merhabalar,
Çalıştırdığınız scriptte sorun tırnak işaretlerinde gözüküyor. Scripti PowerShell ISE aracılığıyla hazırlarsanız script daha sağlıklı çalışacaktır.
Yine de hata alırsanız hatanın ekran alıntısını iletebilir misiniz?
Merhaba,
Kodu çalıştırdığımda aşağıdaki hatayı alıyorum;
PS C:\> .\AD_AddUser.ps1
Import-Module : A positional parameter cannot be found that accepts argument ‘$null’.
At C:\AD_AddUser.ps1:1 char:1
+ Import-Module ActiveDirectory $Users = Import-Csv -Delimiter “;” -Path “C:\AD_Us …
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Import-Module], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
Yardımcı olursanız çok sevinirim.
Merhabalar,
Çalıştırdığınız scriptte sorun tırnak işaretlerinde gözüküyor. Scripti PowerShell ISE aracılığıyla hazırlarsanız script daha sağlıklı çalışacaktır.
Import-Module ActiveDirectory
$Users = Import-Csv -Delimiter “;” -Path “.\Users.csv”
foreach ($User in $Users)
{
$OU = “OU=NewUsers,OU=Merkez,DC=taspinar,DC=local”
$Password = $User.Password
$UserFirstname = $User.GivenName
$FirstLetterFirstname = $UserFirstname.substring(0,1)
$UPN = $User.SamAccountName + “@” + $User.Domain
New-ADUser -Name $User.DisplayName -SamAccountName $User.SamAccountName -Description
$User.Description -UserPrincipalName $UPN -DisplayName $User.DisplayName -GivenName
$User.GivenName -Surname $User.SurName -EMailAddress $User.Mail -AccountPassword
(ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -Path $OU }
hata aldık bakabilir misiniz
Merhabalar,
Aldığınız hata nedir?
At line:14 char:19
+ $User.Description -UserPrincipalName $UPN -DisplayName $User.DisplayN …
+ ~~~~~~~~~~~~~~~~~~
Unexpected token ‘-UserPrincipalName’ in expression or statement.
At line:14 char:38
+ $User.Description -UserPrincipalName $UPN -DisplayName $User.DisplayN …
+ ~~~~
Unexpected token ‘$UPN’ in expression or statement.
At line:14 char:43
+ $User.Description -UserPrincipalName $UPN -DisplayName $User.DisplayN …
+ ~~~~~~~~~~~~
Unexpected token ‘-DisplayName’ in expression or statement.
At line:14 char:56
+ $User.Description -UserPrincipalName $UPN -DisplayName $User.DisplayN …
+ ~~~~~
Unexpected token ‘$User’ in expression or statement.
At line:14 char:74
+ … ion -UserPrincipalName $UPN -DisplayName $User.DisplayName -GivenName
+ ~~~~~~~~~~
Unexpected token ‘-GivenName’ in expression or statement.
At line:15 char:17
+ $User.GivenName -Surname $User.SurName -EMailAddress $User.Mail -Acco …
+ ~~~~~~~~
Unexpected token ‘-Surname’ in expression or statement.
At line:15 char:26
+ $User.GivenName -Surname $User.SurName -EMailAddress $User.Mail -Acco …
+ ~~~~~
Unexpected token ‘$User’ in expression or statement.
At line:15 char:40
+ $User.GivenName -Surname $User.SurName -EMailAddress $User.Mail -Acco …
+ ~~~~~~~~~~~~~
Unexpected token ‘-EMailAddress’ in expression or statement.
At line:15 char:54
+ $User.GivenName -Surname $User.SurName -EMailAddress $User.Mail -Acco …
+ ~~~~~
Unexpected token ‘$User’ in expression or statement.
At line:15 char:65
+ … Name -Surname $User.SurName -EMailAddress $User.Mail -AccountPassword
+ ~~~~~~~~~~~~~~~~
Unexpected token ‘-AccountPassword’ in expression or statement.
Not all parse errors were reported. Correct the reported errors and try again.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
Bu hatayı aldık hocam sanırım çekmeye çalıştığımız listeyle alakalı
Merhabalar,
Sorun script içerisindeki tek tırnak ve çift tırnaklardan kaynaklanmış gibi gözüküyor. Tırnak işaretlerini düzeltirseniz sorun kalmaz diye düşünüyorum.