PowerShell – masowe tworzenie użytkowników w AD

Z pewnością każdy z nas miał lub będzie miał potrzebę stworzenia w Active Directory wielu użytkowników na raz.
Korzystając z okazji, że taki skrypt niedawno napisałem, podzielę się nim z Wami.

Będziemy potrzebować plik *.csv z listą użytkowników. Ja zrobiłem to w formie takiej:
Firstname,Lastname,SAM
Michał,Testowy,mtestowy
Janusz,Testowy,jtestowy
(...)

Całość jak wspomniałem zapisujemy w pliku *.csv z kodowaniem UTF-8 bez BOM (polecam Notepad++).

Teraz skrypt.

$Users = Import-Csv -Path „C:\users.csv” -Encoding UTF8
$DomainName = „test.local”
$Password = „B@RdzoSiln3”

Tutaj wczytaliśmy plik, oraz ustaliliśmy stałe zmienne (nazwa domeny i hasło – dla każdego takie samo)

Teraz w pętli, będziemy dla każdego użytkownika pobierać oraz generować poszczególne atrybuty oraz na bieżąco tworzyć konta.
Dodatkowo dodałem mechanizm try-catch, tak, żeby było wiadomo przy tworzeniu którego użytkownika wystąpił błąd.

foreach ($User in $Users){
$Displayname = $User.Firstname + ” ” + $User.Lastname
$Firstname = $User.Firstname
$Lastname = $User.Lastname
$SAM = $User.SAM
$UPN = $User.SAM + „@” + $DomainName
try{
New-ADUser -Name „$Displayname” -DisplayName „$Displayname” -SamAccountName $SAM -UserPrincipalName $UPN -GivenName „$Firstname” -Surname „$Lastname” -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -server $DomainName
Write-Host -ForegroundColor Green „Użytkownik: ” $Displayname ” | ” $SAM ” został utworzony !”
}
catch{
Write-Host -ForegroundColor red „Błąd przy tworzeniu użytkownika: ” $Displayname ” | ” $SAM ” :[„
}
}

No dobra, a co jeśli nie chcemy tworzyć imiennych kont ale chcemy zachować porządek w nazewnictwie? Na przykład mogą to być konta, które są używane przez kilka osób.
Możemy się posłużyć nazewnictwem: UserX, gdzie X to kolejna licza.

$nr=0
$ile = 3
$domain = „test.local”
while($nr -lt $ile){
New-ADUser -Name „User$nr” -AccountPassword (ConvertTo-SecureString „B@RdzoSiln3” -AsPlainText -Force) `
-UserPrincipalName „User$nr@$domain” -Server $domain -Enabled $true
$nr++
}

Ten skrypt zachowuje się identycznie jak pierwszy z tym, że nie pobieramy nazw z pliku, tylko generujemy na bieżąco nowe nazwy. Parametr „$ile” określa liczbę kont, którą chcemy utworzyć.

Tak stworzeni użytkownicy będą znajdować się w domyślnej lokalizacji – Users. Jeśli chcemy aby nowo stworzone konta trafiły do zdefiniowanego przez nas wcześniej OU, wystarczy dodać parametr: -Path „ou=Pracownicy,dc=test,dc=local”

Przeczytaj także...

2 komentarze

  1. Witekh napisał(a):

    Można jeszcze bardziej uprościć:

    Firstname,Lastname
    Michał,Testowy

    i w skrypcie
    $SAM=$firstname.tolower()[0]+$lastname.tolower()

    PS. Fajnie, że wróciliście! PZDR

    • Michał Wróbel napisał(a):

      Rzeczywiście jest krócej i zapewne jest jeszcze kilka sposobów żeby zrobić to samo 🙂
      Dzięki za komentarz!

Dodaj komentarz