Export und Import von Usern in unterschiedliche Active Directorys über PowerShell

– Arno Kramer

„Wann brauche ich schon einen Import von Usern über PowerShell? Das Ganze lässt sich doch auch einfach über ADMT regeln…“

Nein, leider nicht immer!

Mögliche Anwendungsfälle wären z.B.:

  • Ein Migrations-Szenario in dem eine neue AD benötigt wird, weil zum Beispiel die alte AD irreparabel beschädigt ist.
  • Auch denkbar wäre, dass man Testuser in einer autarken Umgebung anlegen will, diese aber gleiche oder ähnliche Anmeldedaten haben sollen.

Mit kleinen Anpassungen wäre es auch möglich das folgende Skript zu verwenden um Anpassungen in der AD vorzunehmen oder einfach ein Review der aktuellen AD zu erstellen.
Als erstes lassen wir uns aus der Quell-AD alle User aus die wir Importieren wollen.
Dazu nutzen wir folgenden Befehl:

Get-Aduser -SearchBase „OU=MeineUser,DC=Quelle,DC=local“ -Filter * -Properties * | Select GivenName,Surname,SamAccountName,Description,telePhonenumber | Export-Csv -Path c:tempUserRohdaten.csv -NoTypeInformation

Hier lese ich alle User aus der „MeineUser“ aus und schreibe Vorname, Nachname, Anmeldename, Beschreibung und Telefonnummer in eine CSV-Datei. In der Datei können dann bei Bedarf auch noch Anpassungen vor dem Import gemacht werden.

Die CSV hat dann folgendes Format:

„GivenNAme“,“Surname“,“SamAccountName“,“Description“,“telePhonenumber“
„Max“,“Meyer“,“MMeyer“,“Wichtige Person“,“0293 – 229328“

Hier ein kleiner Tipp:

In vielen Active Directorys sehe ich den Displaynamen im Muster von „Meyer, Max“. Es empfiehlt sich also als Delimiter etwas anders als das Komma zu wählen. Über die Active Directory PowerShell können die User dann wieder importiert werden.

$Users = Import-Csv -Path „C:UsersadministratorUser-Final-CSV.csv“ -Delimiter „|“

$UPNSuffix = „contoso.zz“

$OU = „OU=Test,DC=contoso,DC=zz“

$PW = „StartPW123#“

ForEach ($User in $Users){

$Displayname = $User.Surname + “ “ + $User.Givenname

$UserFirstname = $User.Givenname

$UserLastname = $User.Surname

$SAM = $User.SamAccountName

$UPN = $User.SamAccountName + „@“ + $UPNSuffix

$Description = $User.Description

$Phonenumber = $User.telePhonenumber

New-ADUser -Name „$Displayname“ -DisplayName „$Displayname“ -SamAccountName $SAM -UserPrincipalName $UPN -GivenName „$UserFirstname“ -Surname „$UserLastname“ -Description

„$Description“ -AccountPassword (ConvertTo-SecureString $PW -AsPlainText -Force) -Enabled $false -Path „$OU“ -ChangePasswordAtLogon $true -server $UPNSuffix -OfficePhone „$Phonenumber“}

Das Skript importiert dann die User aus der CSV mit einem Start Kennwort. Die User sind aus Sicherheitsgründen erstmal deaktiviert und müssen das Kennwort bei der nächsten Anmeldung ändern. So lassen sich schnell User aus bestimmten OUs zwischen zwei nicht mit einander verbunden Active Directory bewegen.

Ein kleiner Helfer:

über die PowerShell im Alltag – Die PowerShell wird immer wichtiger für alle Arbeiten eines ITlers. Über Scripte lassen sich viele alltägliche Aufgaben automatisieren oder stark vereinfachen.

Autor: Arno Kramer