Powershell Active Directory csv User Import
AD CSV Benutzer Import

Da ich grad ein wenig die Migration unserer 8 Domänen vorbereite – hier mal ein Powershell Script und Benutzer aus einer csv (mit Komma getrennt) ins AD zu importieren.

Download: ad_user_import_from_csv.ps1.txt

Die Datei in .ps1 umbenennen.

Damit das Script läuft muss noch die Execution Policy so geändert werden das auch „remotesigned“ Scripte ausgeführt werden dürfen.

set-executionpolicy remotesigned

Bei howtogeek.com gibs den original Artikel nach dem ich das Script umgebaut habe.

Zum editieren hab ich Notepad++ benutzt und den Quelltext mal eben von 20 auf 120 Zeilen ausgedehnt 🙂

An dieser Stelle – Danke an das OOP Modul im Studium – das hat an dieser Stelle wirklich was gebracht …

Das csv sollte so aussehen:

GivenName,sn,OU,Title,Description,Department,telephoneNumber
Anna,Bolika,KZH,Innere Medizin,OP Leiter,Magdeburg,0815/4711

Ich hab mich bemüht alles zu kommentieren 🙂

An dieser Stell möchte ich nochmal darauf hinweisen:

ICH BIN KEIN PROGRAMMIERER!!!!


Wer Verbesserungsvorschläge hat -> bitte die Kommentarfunktion verwenden.

Weiterer Lesestoff zu dem Thema:

Technet – Display Output in Color Using Windows PowerShell
Technet – about_Try_Catch_Finally
Technet – The String’s the Thing
Technet – Even More Things You Can Do With Arrays
Technet – Create Active Directory Users Based On Excel Input

colorconsole.de – PowerShell Special Characters
powershellpro.com – Power Shell Variables and Arrays
vexasoft.com – Powershell error handling

Noch keine Stimmen.
Bitte warten...

Tags: , , , ,

2 Antworten zu “Powershell Active Directory csv User Import
AD CSV Benutzer Import”

  1. Ralph sagt:

    Es ist auf jeden Fall sicherer (kann ich aus Erfahrung sagen) die aus dem File ausgelesenen Variablen zu trimmen:
    also nicht: $objUser.Put(“Description”,$Description)
    sondern: $objUser.Put(“Description”,$Description).Trim()

    Leerzeichen werden sehr oft mal übersehen.

    Auch wichtig: Umlaute
    $SamAccountName = $FirstName.ToLower().Trim() + „.“ +$LastName.ToLower().Trim()
    # Umlaute aussortieren
    $SamAccountName = $SamAccountName -replace („ä“, „ae“) -replace(„ö“, „oe“) -replace(„ü“, „ue“) -replace(„ß“, „ss“) -replace(“ „, „_“)

    Außerdem ist es von Vorteil, dem User auch gleich noch ein Passwort mitzugeben:

    # Generate-Password

    $Random = New-Object System.Random

    # Two Upper Case Characters
    [string]$UserPassword += [char]$Random.Next(49,57)
    [string]$UserPassword += [char]$Random.Next(65,72)

    # Two LowerCase Characters
    [string]$UserPassword += [char]$Random.Next(97,107)
    [string]$UserPassword += [char]$Random.Next(109,122)

    # One Special Char –> Vorsicht. Können die User oft nicht interpretieren.
    # [string]$UserPassword += [char]$Random.Next(36,43)

    # Two UpperCase Characters
    [string]$UserPassword += [char]$Random.Next(65,72)
    [string]$UserPassword += [char]$Random.Next(80,91)

    # One LowerCase
    [string]$UserPassword += [char]$Random.Next(97,107)

    Alles zusammen kann man sehr schön ausgeben lassen. Das hat den Vorteil, daß man pro User ein File mit den relevanten Informationen (Benutzer, Accountname, Passwort) erstellen kann. Eine schöne Serienbriefvorlage zumVersenden an die User:

    if ($UserInformationFile -ne „“)
    {
    „`n“ + $Name + „`n`nAnmeldename: $UserDomain\“ + $SamAccountName + „`nPasswort: “ + $UserPassword + „`n“ | out-file -Encoding ASCII -FilePath $UserInformationFile -Append
    }

    Noch keine Stimmen.
    Bitte warten...
  2. Denis sagt:

    Danke für die Tipps.

    Noch keine Stimmen.
    Bitte warten...

Hinterlasse eine Antwort