Automatiseer het maken van Active Directory-gebruikers met New-ADUser

Ben je het zat om telkens weer Active Directory (AD) Gebruikers en Computers (ADUC) te openen, rond te klikken, typfouten te maken en de handelingen uit te voeren om voor de zesde keer vandaag een nieuw gebruikersaccount aan te maken? Zo ja, dan moet je het veelvoorkomende proces van het toevoegen van een gebruiker aan Active Directory automatiseren met behulp van PowerShell en het New-ADUser cmdlet!

Het is vrijdagavond en een uur voordat je van plan bent om naar huis te gaan voor het weekend. Het was een drukke week, dus je hebt besloten om plannen te maken om de grote wedstrijd te kijken met je beste vrienden. Maar dan komt je baas nonchalant naar je toe en vraagt: “Heb je de e-mail ontvangen? Kun je dit afhandelen voor het einde van de dag?” Je opent snel Microsoft Outlook en jawel, het is een e-mail van de HR-afdeling, waarbij je geadresseerd bent door je manager, die je vraagt om 400 nieuwe werknemersaccounts voor Active Directory (AD) aan te maken voordat je het kantoor verlaat. Geweldig. Daar gaat de wedstrijd.

Je zoekt snel op internet naar opties om deze gebruikersaccounts snel aan te maken en ontdekt dat je de accountprovisionering in AD kunt automatiseren met behulp van de commandoregel en een PowerShell-cmdlet genaamd New-ADUser.

Meestal maken beheerders handmatig AD-accounts aan door gebruik te maken van de Active Directory-gebruikers en -computers MMC-snap-in die is geïnstalleerd op je desktopcomputer via Remote Server Administration Tools (RSAT). Maar op deze manier een AD-gebruiker aanmaken kost gemiddeld drie minuten per gebruikersaccount. Het aanmaken van AD-gebruikersaccounts is geen glamoureuze taak en is rijp voor automatisering.

Er zijn drie gebruikelijke manieren waarop beheerders AD-gebruikersaccountobjecten aanmaken met behulp van het New-AdUser cmdlet.

  1. Voeg een Active Directory gebruikersaccount toe met behulp van de vereiste en aanvullende cmdlet parameters.
  2. Kopieer een bestaand AD gebruikersobject om een nieuw account te maken met behulp van de Instance parameter.
  3. Koppel het Import-Csv cmdlet met de New-ADUser cmdlet om meerdere Active Directory gebruikersobjecten te maken met behulp van een door komma’s gescheiden waarde (CSV) bestand.

Deze praktijken kunnen soms worden gecombineerd om samen een efficiëntere oplossing te creëren. Bijvoorbeeld, je kunt alle drie de opties gebruiken om een sjabloon-AD-account te maken dat kan worden gekopieerd met behulp van een CSV-bestand om meerdere nieuwe AD-accounts te genereren.

In dit artikel ga je leren hoe je New-AdUser kunt gebruiken en profiteren van elk van deze methoden.

Beheer en rapporteer over Active Directory, Exchange en Microsoft 365 met ManageEngine ADManager Plus. Download gratis proefversie!

Vereisten

Voordat je aan de slag gaat met de New-AdUser cmdlet, moet je eerst zorgen dat je aan een paar vereisten voldoet.

  • Windows PowerShell 5.1
  • De Remote Server Administration Tools (RSAT)-pakket is geïnstalleerd. Dit pakket installeert de Active Directory PowerShell-module, die het New-AdUser-cmdlet bevat
  • Aangemeld op een Windows-computer in hetzelfde domein als de gebruikersaccounts die u wilt maken
  • Aangemeld als een AD-gebruikersaccount met toestemming om nieuwe gebruikersaccounts te maken

Zodra u aan deze vereisten voldoet, kunt u aan de slag!

Het maken van een enkel gebruikersaccount met behulp van het New-ADUser-cmdlet

Laten we eerst een enkel gebruikersaccount maken om te laten zien hoe New-ADUser op een basaal niveau werkt. U zult merken dat New-ADUser niet veel verplichte parameters heeft. Sterker nog, de enige verplichte parameter is de Name-parameter, maar deze wordt zelden alleen gebruikt.

U zult meestal veel verschillende parameters gebruiken om een gebruikersaccount te maken. Gelukkig zijn de meeste parameters zelfverklarend en komen ze goed overeen met wat u ziet in ADUC. Zoals u kunt zien in het onderstaande voorbeeld, kunt u gemakkelijk veel parameters gebruiken. Elke parameter komt ongeveer overeen met een attribuut van een enkel gebruikersaccount.

Merk op dat we in het voorbeeld backticks gebruiken. Dit is alleen om een lange enkele regel te voorkomen voor leesbaarheidsdoeleinden.

PS51> New-ADUser `
    -Name "Kevin Sapp" `
    -GivenName "Kevin" `
    -Surname "Sapp" `
    -SamAccountName "kesapp-test" `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -ChangePasswordAtLogon $True `
    -Company "Code Duet" `
    -Title "CEO" `
    -State "California" `
    -City "San Francisco" `
    -Description "Test Account Creation" `
    -EmployeeNumber "45" `
    -Department "Engineering" `
    -DisplayName "Kevin Sapp (Test)" `
    -Country "us" `
    -PostalCode "940001" `
    -Enabled $True

De organisatie-eenheid (OU) waar het AD-gebruikersobject is opgeslagen, mag geen duplicaat van SamAccountName hebben.

Nu het account is aangemaakt, bevestig dan dat het account is aangemaakt met behulp van het Get-ADUser cmdlet. Hieronder kun je zien dat Get-AdUser enkele veelvoorkomende attributen retourneert voor het zojuist aangemaakte gebruikersaccount.

PS51> Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City

DistinguishedName : CN=Kevin Sapp,CN=Users,DC=mylab,DC=local
Enabled           : True
GivenName         : Kevin
Name              : Kevin Sapp
ObjectClass       : user
ObjectGUID        : 3b18338d-b3c7-4d00-a54a-1d3121e1363f
SamAccountName    : kesapp-test
SID               : S-1-5-21-1181311581-1397355964-1468337501-1109
Surname           : Sapp
UserPrincipalName : kesapp-test@mylab.local

Het kopiëren van een bestaand AD-gebruikersobject

Een andere methode voor accountcreatie is het kopiëren van een bestaand AD-gebruikersobject en het gebruiken als sjabloon voor een nieuw AD-account. Er zijn verschillende voordelen aan deze aanpak:

  • Het bespaart tijd omdat je niet elk parameter afzonderlijk hoeft op te geven
  • Het helpt bij het standaardiseren van het maken van AD-accounts
  • Het voorkomt menselijke fouten veroorzaakt door handmatige accountcreatie en maakt het mogelijk dat medewerkers in hetzelfde team dezelfde aangepaste AD-attributen hebben

Voor dit voorbeeld gebruik je het zojuist aangemaakte account als sjabloon (kesapp-test). Misschien moet je een nieuw gebruikersaccount maken met dezelfde staat, locatie, afdeling, land en stad AD-attributen. Dit nieuwe account is voor de medewerker James Brown.

Merk op dat er een beperking is bij deze aanpak en dat alleen de volgende AD-accounteigenschappen die worden vermeld in de onderstaande link kunnen worden gekopieerd met dit proces. Voor meer informatie, bekijk de Copy a User’s Properties Microsoft docs pagina.

De eerste stap is het vinden van het AD-gebruikersaccount dat als sjabloon zal worden gebruikt, waarbij ervoor wordt gezorgd dat alle attributen die moeten worden gekopieerd, worden verstrekt via de Properties-parameter. Gebruik hiervoor de Get-ADUser-cmdlet zoals hieronder getoond. Hiermee wordt eenvoudig het AD-gebruikersobject opgeslagen in de variabele $template_account.

Merk op dat de tweede regel de UserPrincipalName (UPN)-eigenschap van het sjabloonobject instelt op $null. Dit wordt aanbevolen om ervoor te zorgen dat de UPN van het sjabloon uniek is. Elk AD-gebruikersaccount moet een unieke UPN hebben.

$template_account = Get-ADUser -Identity kesapp-test -Properties State,Department,Country,City
$template_account.UserPrincipalName = $null

Zodra je het sjabloon-gebruikersaccount hebt vastgelegd, kun je dat object gebruiken als waarde voor de Instance-parameter en eventuele gebruikersspecifieke parameters verstrekken om de andere attributen in te vullen zoals hieronder getoond.

New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

Je zou nu een account moeten hebben voor James met alle toegestane AD-attributen overgenomen door het sjabloonobject.

Valkuilen bij gebruikersaccountsjablonen

Een veelvoorkomende fout bij deze aanpak is het gebruik van het *-teken als jokerteken voor de Properties-parameter bij het vastleggen van het sjabloonobject. Beheerders doen dit omdat ze alle gebruikersaccounteigenschappen in één keer willen kopiëren. Maar dit werkt niet.

Bijvoorbeeld, de onderstaande opdracht zal een fout genereren:

$template_account = Get-ADUser -Identity kesapp-test -Properties *
New-ADUser `
    -Instance $template_account `
    -Name 'James Brown' `
    -SamAccountName 'jbrown' `
    -UserPrincipalName '[email protected]' `
    -AccountPassword (Read-Host -AsSecureString "Input User Password") `
    -Enabled $True

Het probleem met deze aanpak is dat het attribuut UserPrincipalName uniek moet zijn over het AD Forest. Daarom moet de UPN worden overschreven in de New-ADUser-opdracht of worden ingesteld op null in de sjabloongegevens (hieronder weergegeven).

$template_account.UserPrincipalName = $null

Nog een reden waarom de wildcard-aanpak faalt, is dat sommige van de AD-eigenschappen die worden gekopieerd door de wildcard alleen-lezen zijn (bezit van de Security Account Manager).

Permission error when copying AD objects

Het maken van nieuwe gebruikersaccounts met een CSV-bestand

Wat je nog verder kunt doen, is werknemersaccounts uit een CSV-bestand lezen en New-ADUser gebruiken om AD-gebruikersaccounts te maken.

Deze oplossing wordt vaak gebruikt door veel organisaties om accountcreatie te automatiseren in combinatie met HR-systemen die platte bestanden maken met informatie over de onboarding van nieuwe medewerkers.

Laten we zeggen dat je een lijst met nieuwe medewerkers hebt ontvangen in een CSV-bestand. Elke rij in het CSV-bestand vertegenwoordigt een enkele rij en heeft de volgende kolommen: Voornaam, Achternaam, Afdeling, Staat, WerknemerID en Kantoor. De naamgevingsconventie voor het gebruikersaanmeldingsaccount is de eerste initiaal van de werknemer samengevoegd met de achternaam, zoals ksapp voor de werknemer Kevin Sapp.

FirstName, LastName, Department, State, EmployeeID, Office, UserPrincipalName, SamAccountName, Password
Micheal, Jordan, NBA, Chicago, 23, Chicago Bulls, mjordan@mylab.local, mjordan, p@ssw0rd1
Lebron, James, NBA, Los Angeles,24, LA Lakers,ljames@mylab.local, ljames, p@ssw0rd2
Dwayne, Wade, NBA, Miami, 13, Miami Heat, dwade@mylab.local, dwade, p@ssw0rd3
$import_users = Import-Csv -Path sample.csv

Zodra je het CSV-bestand hebt, gebruik dan Import-Csv om het CSV-bestand te lezen en elke rij vast te leggen als een enkel object. Itereer vervolgens over elk van die rijen en geef de juiste velden in het CSV-bestand door aan de verwachte parameters van New-ADUser. Je kunt hieronder een voorbeeld hiervan zien.

$import_users | ForEach-Object {
    New-ADUser `
        -Name $($_.FirstName + " " + $_.LastName) `
        -GivenName $_.FirstName `
        -Surname $_.LastName `
        -Department $_.Department `
        -State $_.State `
        -EmployeeID $_.EmployeeID `
        -DisplayName $($_.FirstName + " " + $_.LastName) `
        -Office $_.Office `
        -UserPrincipalName $_.UserPrincipalName `
        -SamAccountName $_.SamAccountName `
        -AccountPassword $(ConvertTo-SecureString $_.Password -AsPlainText -Force) `
        -Enabled $True
}

Beheer en rapporteer Active Directory, Exchange en Microsoft 365 met ManageEngine ADManager Plus. Download gratis proefversie!

Samenvatting

In deze post heb je geleerd hoe je nieuwe gebruikersaccounts kunt voorzien met behulp van drie verschillende methoden:

  1. Enkelvoudige accountcreatie
  2. Het kopiëren van een gebruikersaccount vanuit een sjabloon
  3. Het aanmaken van meerdere accounts met behulp van een CSV-bestand

Dit zijn basismanieren om nieuwe gebruikers in je omgeving te voorzien. Deze methoden werken uitstekend wanneer je ze bundelt door een PowerShell-functie en module te maken. Je kunt zelfs nog een stap verder gaan en je eigen automatiseringsproces maken met behulp van een SQL- of Oracle-database als bron (in plaats van een CSV-bestand). Voel je vrij om elke methode te benutten op basis van je eigen unieke vereisten en gebruiksscenario’s.

Hopelijk bespaart deze informatie je in moeilijke situaties! Je hebt een nieuwe vaardigheid geleerd en je kon met je vrienden naar het feest gaan zonder je werk-privébalans op te offeren!

Verder lezen

Source:
https://adamtheautomator.com/new-aduser/