Active Directory’de Toplu Kullanıcı Oluşturma

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.

01

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.

02

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

Active Directory_de Toplu Kullanıcı Oluşturma-03

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

03

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.

04
05

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

06

Faydalı olması dileğiyle…

 

 

Active Directory’de Toplu Kullanıcı Oluşturma” için 13 yorum

  1. 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

      1. 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.

        1. 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?

          1. Merhaba,

            Yukarıda verdiğiniz -OtherAttributes @{‘tCKimlikNo’ = $User.TCKN} kod ile sorun çözüme kavuştu.

            Teşekkür ederim.

  2. 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 }

    1. 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?

  3. 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.

    1. 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.

  4. 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

  5. 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ı

    1. 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.

Bir Cevap Yazın