Amennyiben több felhasználót kell létrehozni egyszerre, használhatjuk a 2012-es szervernél megismert SolarWinds megoldást, vagy PowerShellt is. Ez utóbbi kicsit egyszerűbb.
Szükségünk lesz egy csv fájlra, nevezzük el pl. users.csv-nek!
OU – rendszeruzemelteto, feltételezzük, hogy van ilyen szervezeti egységünk az AD-ben.
AD – februar.local ebben a példában
Meg kell még adni a felhasználó vezeték és keresztnevét, felhasználói nevét, szervezeti egységet, és a jelszót.
Szerkesztésre a VisualStudioCode-ot, vagy NotePad++-t ajánlom! Excel esetén hibák lépthetnek fel.
|
1 2 3 4 5 6 |
FirstName,LastName,Username,OU,Password Kiss,János,win01,"OU=rendszeruzemelteto,DC=februar,DC=local",P@ssw0rd123 Nagy,Anna,win02,"OU=rendszeruzemelteto,DC=februar,DC=local",P@ssw0rd123 Kiss,Anna,win03,"OU=rendszeruzemelteto,DC=februar,DC=local",P@ssw0rd123 Nagy,János,win04,"OU=rendszeruzemelteto,DC=februar,DC=local",P@ssw0rd123 Teszt,Elek,win05,"OU=rendszeruzemelteto,DC=februar,DC=local",P@ssw0rd123 |
A PowerShell parancsok:
|
1 2 3 4 5 6 7 8 9 10 11 |
Import-Csv .\users2.csv | ForEach-Object { New-ADUser ` -Name "$($_.LastName) $($_.FirstName)" ` -GivenName $_.FirstName ` -Surname $_.LastName ` -SamAccountName $_.Username ` -UserPrincipalName "$($_.Username)@februar.local" ` -Path $_.OU ` -AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) ` -Enabled $true } |
Módosított verzió, ha az előző nem működne:
|
1 2 3 4 5 6 |
"FirstName","LastName","Username","OU","Password" "Kiss","János","win06","OU=rendszeruzemelteto,DC=februar,DC=local","P@ssw0rd123" "Nagy","Anna","win07","OU=rendszeruzemelteto,DC=februar,DC=local","P@ssw0rd123" "Kiss","Anna","win08","OU=rendszeruzemelteto,DC=februar,DC=local","P@ssw0rd123" "Nagy","János","win09","OU=rendszeruzemelteto,DC=februar,DC=local","P@ssw0rd123" "Teszt","Elek","win10","OU=rendszeruzemelteto,DC=februar,DC=local","P@ssw0rd123" |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# Előfeltétel: RSAT ActiveDirectory modul Import-Module ActiveDirectory -ErrorAction Stop $csvPath = ".\users.csv" # PS 5.1-kompatibilis beolvasás (UTF-8 BOM-mal mentsd a CSV-t!) # Ha PowerShell 7-et használsz, a lentit kicserélheted sima Import-Csv -Path ... -Delimiter ',' -Encoding UTF8-ra. $csvData = Get-Content -Path $csvPath -Encoding UTF8 | ConvertFrom-Csv -Delimiter ',' # Kötelező oszlopok ellenőrzése $required = 'FirstName','LastName','Username','OU','Password' foreach ($col in $required) { if (-not ($csvData | Get-Member -Name $col -MemberType NoteProperty)) { throw "Hiányzó oszlop a CSV-ben: $col" } } foreach ($row in $csvData) { # Trim minden releváns mezőn foreach ($p in $required) { $row.$p = ($row.$p -as [string]) if ($row.$p) { $row.$p = $row.$p.Trim() } } Write-Host "Feldolgozás: $($row.Username) - OU: $($row.OU)" -ForegroundColor Cyan if ([string]::IsNullOrWhiteSpace($row.Password) -or [string]::IsNullOrWhiteSpace($row.OU)) { Write-Warning "Hiányzó adatok a sornál: $($row.Username). Jelszó vagy OU üres!" continue } # OU létezik? $ouDn = $row.OU $ouObj = Get-ADOrganizationalUnit -LDAPFilter "(distinguishedName=$ouDn)" -ErrorAction SilentlyContinue if (-not $ouObj) { Write-Warning "Nem található OU: $ouDn. $($row.Username) kihagyva." continue } # Felhasználónév foglaltság $existing = Get-ADUser -LDAPFilter "(sAMAccountName=$($row.Username))" -ErrorAction SilentlyContinue if ($existing) { Write-Warning "Már létezik sAMAccountName: $($row.Username). Kihagyva." continue } $password = ConvertTo-SecureString $row.Password -AsPlainText -Force try { New-ADUser ` -Name "$($row.LastName) $($row.FirstName)" ` -GivenName $row.FirstName ` -Surname $row.LastName ` -SamAccountName $row.Username ` -UserPrincipalName "$($row.Username)@februar.local" ` -Path $ouDn ` -AccountPassword $password ` -Enabled $true ` -ChangePasswordAtLogon $false Write-Host "Sikeresen létrehozva: $($row.Username)" -ForegroundColor Green } catch { Write-Error "Hiba történt $($row.Username) létrehozásakor: $($_.Exception.Message)" } } |
