Heute möchte ich mal zeigen wie Benutzer usw. mit Hilfe  der PowerShell angelegt werden können. Ziel soll es sein, einen Benutzersatz aus einer CSV-Datei zu importieren. Dazu sollen noch AD-Gruppen angelegt werden die als Mitglieder die neu angelegten Benutzer enthalten. Ich fange auf einer „Grünen Wiese“ an. Es Existieren noch keine Organisationseinheiten (OU), die auch via PowerShell angelegt werden sollen.

geplante OU Struktur Im Bild ist zu sehen, wie die Struktur aufgebaut werden soll. Damit mit Hilfer der PowerShell AD-Objekte erstellt werden können benötigt man entweder das AD Modul für die Windows PowerShell oder wir laden das AD-Modul in die „normale“ PowerShell ein:

 Import-Module ActiveDirectory

Das fällt bei Windows Server 2012 weg, da hier das Modul automatisch geladen wird, sobald der erste AD-Befehl abgesetzt wird.

Zunächst sollten wir uns also den Befehl zum erstellen von OUs ansehen:

 

New-ADOrganizationalUnit -Name "Com Trainer AG" -Path "DC=com,DC=local"

 

Diesen Befehl führen wir fort, um die darunter liegenden OUs anzulegen. Alle OUs werden automatisch vor versehentlichem Löschen geschützt. Wichtig ist immer das der Parameter „-Path“ den Distinguished Name (DN der Ziel-OU erhält. Möchten wir also eine OU mit dem Namen Gruppen erstellen so muss der Befehl wie folgt aussehen:

 

New-ADOrganizationalUnit -Name "Gruppen" -Path
"ou=Com Trainer AG,DC=com,DC=local"

 

Nachdem die OUs erstellt worden sind legen wir nun Gruppen an, dabei halten wir uns an das Prinzip von Microsoft:

  • IGLUDLA: Identity — Global Group — Universal Group — Domainlocal Group — Access

Wir erstellen eine Globale Gruppe für jede Abteilung: _gg_ABT_IT –> Soll als Schattengruppe hinterlegt werden die alle Benutzerkonten enthält die im Abteilungsattribut „IT“ stehen haben. Zudem werden wir die Domänenlokale Gruppen erstellen: _ACL_ABT_IT_Read & _ACL_ABT_IT_Write. Diese Domänenlokalen Gruppen sollen später in die ACL der Freigaberessource dieser Abteilung aufgenommen werden.

Globale Gruppen mit der PowerShell erstellen:

 

New-ADGroup -Name "_gg_IT" -SamAccountName _gg_IT -GroupCategory Security 
-GroupScope Global -DisplayName "_gg_IT" 
-Path "ou=Globale,ou=Gruppen,ou=Com Trainer AG,dc=com,dc=local" -Description "Schattengruppe IT"

 

Domänenlokale Gruppen erstellen:

 

New-ADGroup -Name "_ACL_ABT_IT_Read" -SamAccountName _ACL_ABT_IT_Read 
-GroupCategory Security -GroupScope DomainLocal -DisplayName "_ACL_ABT_IT_Read" 
-Path "ou=Lokale,ou=Gruppen,ou=Com Trainer AG,dc=com-trainer,dc=loc" 
-Description "Berechtigungsgruppe ABt. IT Lesen"

 

Wichtig beim erstellen der Gruppen ist der Parameter „-GroupScope“ der entscheidet ob es eine Globale oder Domänenlokale Gruppe ist.

Damit wir später Benutzer aus einer CSV-Datei importieren und Erstellen können, sollten wir uns den Befhel zum anlegen eines Objektes mal ansehen:

 

New-ADUser -Name "Andi Sichel" -SamAccountName Andi.Sichel@com.local 
-DisplayName "Andi Sichel" -UserPrincipalName Andi.Sichel@com.local

 

Dies sind die Angaben die für das Objekt gemacht werden sollten, zusätzlich kann auch noch der Pfad mit dem Parameter „-Path ‚DN der OU‘ “ angegeben werden.

Nun fangen wir mal mit den Benutzer an, diese sind bereits in einer CSV-Datei hinterlegt, ich hab hier ein Beispiel: IT

 

Import-CSV IT.csv | foreach {New-ADUser -SamAccountName ($_.GivenName + "." + $_.Surname) 
-Name $_.Name -Surname $_.Surname -GivenName $_.GivenName -DisplayName $_.Name -Department IT 
-UserPrincipalName ($_.GivenName + "." + $_.Surname + "@com.local") 
-EmailAddress ($_.GivenName + "." + $_.Surname + "@com.local") -Company "Com Trainer AG" 
-Path "OU=IT,ou=Benutzer,ou=Bielefeld,ou=Standorte,ou=Com Trainer AG,DC=com,DC=local" 
-AccountPassword (ConvertTo-SecureString -AsPlainText "Password1" -Force) -Enabled $true}

 

Legt die Benutzer aus der CSV-Datei an, der Parameter „-DisplayName“ wird aus dem Werte „Name“ der CSV-Datei geschrieben. Dazu nutzt die PowerShell die Variable $_.Name. So geht das im gesamten Script.

Viel Spaß beim anlegen und arbeiten mit den AD-Objekten über die Windows PowerShell.