warrender
Goto Top

Accounts im Active Directory automatisch anlegen - Programm gesucht

Hallo,

zirka 200 Accounts sollen im AD (Win Server 2008r2) automatisch angelegt werden. Die Accounts sollen gast1-gast200 heißen und das Passwort muss nicht komplex sein.
Wünschenswert wäre es, wenn ich noch angeben könnte, dass die Accounts 1-30 in die OU-A kommen und die Accounts 31-60 in OU-B....

Nach kurzem googlen fühle ich mich von Lösungen erschlagen und bitte daher um einen Tipp.face-wink

LG

Content-ID: 281982

Url: https://administrator.de/contentid/281982

Ausgedruckt am: 22.11.2024 um 06:11 Uhr

110457
110457 04.09.2015 um 12:54:05 Uhr
Goto Top
Der einfachste Weg wäre ein kleines PowerShell-Script.
Pago159
Pago159 04.09.2015 um 12:55:38 Uhr
Goto Top
Hier könnte man dir z.B. CSV2AD v2 empfehlen, wenn du nicht selbst Skripten magst.

https://gallery.technet.microsoft.com/CSV2AD-v2-create-Active-97962e1e
Warrender
Warrender 04.09.2015 um 13:11:03 Uhr
Goto Top
Danke. Ich möchte allerdings auch Passwörter importieren. Das scheint damit nicht zu funktionieren und dürfe auch nicht so einfachen sein, wie ich gedacht habe.
Der Hintergrund ist folgender: Gäste sollen sich bei uns im Wlan (Captive Portal mit Pfsense und Windows Radius) anmelden können. Ich weiß, dass ich Gastaccounts bei Pfsense einfacher anlegen kann, allerdings soll das AD zur Userverwaltung genutzt werden. Außerdem müsste ich bei insgesamt 4x unterschiedlichen Pfsenses User anlegen.
colinardo
Lösung colinardo 04.09.2015 aktualisiert um 15:12:12 Uhr
Goto Top
Hallo Warrender,
Powershell is always your friend, hier ein Schnellschuss ...
(In der Hashtable am Anfang einfach die OUs mit der Anzahl der User auflisten. Zum Schluss werden dir die erzeugten User mit deren zufällig generierten Passwörter aufgelistet)
Import-Module ActiveDirectory

$ou_mapping = @{
    'OU=TestOU1,dc=domain,dc=de' = 30
    'OU=TestOU2,dc=domain,dc=de' = 30
    'OU=TestOU3,dc=domain,dc=de' = 30
}

Function generate-password($length){
    $objRND = new-object System.Random
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray()
    $pass = ""
    0..($length-1) | %{$pass += $chars[$objRND.Next($chars.Length)]}
    return $pass
}

$userlog = @()
$cnt = 0
$ou_mapping.GetEnumerator() | %{
    $OU = $_.Name
    1..$_.Value | %{
        $username = "gast$($cnt + $_)"
        $password = generate-password 10
        $u = New-ADUser -Path $OU -SamAccountName $username -Name $username -PassThru
        if ($u){
            $u | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString $password -AsPlainText -Force)
            $u | Set-Aduser -Enabled $true
            $userlog += New-Object PSObject -Property @{Username=$username;OU=$OU;Password=$password}
        }
    }
    $cnt += $_.Value
}
$userlog | ft Username,OU,Password -AutoSize
Viel Spaß
Grüße Uwe
Pago159
Pago159 04.09.2015 um 13:18:57 Uhr
Goto Top
Du kannst doch den Usern entweder ein Kennwort vorgeben, oder für jeden ein eigenes Generieren lassen.
Die User sollten eh aus Sicherheitsgründen die Kennwörter bei der ersten Anmeldung ändern.
Wenn du die User aus dem AD abgleichst, dann Authentifizieren sich die User auch mit dem Kennwort aus dem AD, so dass du kein Spezielles PW benötigst.

Oder sehe ich da gerade etwas falsch?
Warrender
Warrender 04.09.2015 um 13:34:32 Uhr
Goto Top
@uwe
vielen Dank, du bist ein Wahnsinn! face-wink

@Pago159
Die Änderung der PW bei der ersten Anmeldung ist, soweit ich weiß, über den Umweg "PfSense-Captive Portal" nicht möglich und die Erstanmeldung erfolgt zu 99% am CP.
Warrender
Warrender 04.09.2015 um 13:41:21 Uhr
Goto Top
@uwe

Ich bekomme leider Fehlermeldungen beim Ausführen des Scripts. Würdest du mir bitte weiterhelfen?


In C:\Users\Administrator\Downloads\ad.ps1:4 Zeichen:17
+ $ou_mapping = @{<br />
+                 ~
Das Hashliteral war unvollständig.
In C:\Users\Administrator\Downloads\ad.ps1:4 Zeichen:17
+ $ou_mapping = @{<br />
+                 ~
Der Operator "<" ist für zukünftige Versionen reserviert.  
In C:\Users\Administrator\Downloads\ad.ps1:4 Zeichen:21
+ $ou_mapping = @{<br />
+                     ~~
Unerwartetes Token "/>" in Ausdruck oder Anweisung.  
In C:\Users\Administrator\Downloads\ad.ps1:5 Zeichen:38
+     'OU=TestOU1,dc=domain,dc=de' = 30<br />  
+                                      ~
Der Operator "<" ist für zukünftige Versionen reserviert.  
In C:\Users\Administrator\Downloads\ad.ps1:5 Zeichen:42
+     'OU=TestOU1,dc=domain,dc=de' = 30<br />  
+                                          ~~
Unerwartetes Token "/>" in Ausdruck oder Anweisung.  
In C:\Users\Administrator\Downloads\ad.ps1:6 Zeichen:38
+     'OU=TestOU2,dc=domain,dc=de' = 30<br />  
+                                      ~
Der Operator "<" ist für zukünftige Versionen reserviert.  
In C:\Users\Administrator\Downloads\ad.ps1:6 Zeichen:42
+     'OU=TestOU2,dc=domain,dc=de' = 30<br />  
+                                          ~~
Unerwartetes Token "/>" in Ausdruck oder Anweisung.  
In C:\Users\Administrator\Downloads\ad.ps1:7 Zeichen:38
+     'OU=TestOU3,dc=domain,dc=de' = 30<br />  
+                                      ~
Der Operator "<" ist für zukünftige Versionen reserviert.  
In C:\Users\Administrator\Downloads\ad.ps1:7 Zeichen:42
+     'OU=TestOU3,dc=domain,dc=de' = 30<br />  
+                                          ~~
Unerwartetes Token "/>" in Ausdruck oder Anweisung.  
In C:\Users\Administrator\Downloads\ad.ps1:8 Zeichen:1
+ }<br />
+ ~
Unerwartetes Token "}" in Ausdruck oder Anweisung.  
Es wurden nicht alle Analysefehler berichtet. Korrigieren Sie die berichteten Fehler, und 
versuchen Sie es erneut.
    + CategoryInfo          : ParserError: (:) , ParseException
    + FullyQualifiedErrorId : IncompleteHashLiteral
colinardo
colinardo 04.09.2015 aktualisiert um 14:29:56 Uhr
Goto Top
Dachte ich mir doch das das jetzt kommt, ist ein Fehler der letzten Updates des Forums !
Siehe meinen Beitrag hier
Entwicklertagebuch: Zitate, Text- und Codeblöcke

Hoffentlich wird das schnell behoben sonst werden wir hier mit Fragen überhäuft ....

Geht schon Los ...

-edit- habs als PLAIN formatiert, jetzt kannst du es richtig kopieren!
Warrender
Warrender 04.09.2015 aktualisiert um 14:13:02 Uhr
Goto Top
Danke. Jetzt kommt ein anderer Fehler. Was habe ich falsch gemacht?
New-ADUser : Der Server kann die Anforderung nicht ausführen
In C:\Users\Administrator\Downloads\ad.ps1:24 Zeichen:9
+         New-ADUser -Path $OU -SamAccountName $username -Name $username -Enabled  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (CN=gast89,OU=TestOU2,dc=domain,dc=de:String) [New-A 
   DUser], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Comma 
   nds.NewADUser
colinardo
colinardo 04.09.2015 aktualisiert um 14:32:16 Uhr
Goto Top
CN=gast89,OU=TestOU2,dc=domain,dc=de
Läuft hier fehlerfrei. OUs nicht korrekt angepasst ?

b12d8ebfba59e3e3e0af85dbc82b1398
colinardo
colinardo 04.09.2015 aktualisiert um 14:44:22 Uhr
Goto Top
-Edit- habe es wegen den Passwortrichtlinien oben noch etwas korrigiert ...
Warrender
Warrender 04.09.2015 aktualisiert um 14:54:22 Uhr
Goto Top
ich habe die OU=TestOU1, TestOU2, TestOU3 im Ad angelegt. Muss ich den Namen der Domäne (test.intra) irgendwo angeben?
Edit: Die Änderung der Passwortrichtlinien hat leider nicht geholfen.
colinardo
colinardo 04.09.2015 aktualisiert um 15:01:09 Uhr
Goto Top
Zitat von @Warrender:
Muss ich den Namen der Domäne (test.intra) irgendwo angeben?
Ja sicher !! Hier, du weißt aber schon das was ein Distinguished Name ist oder ?
Wenn die OUs direkt in der Root-Ebene liegen sieht das so aus:
$ou_mapping = @{ 
    'OU=TestOU1,dc=test,dc=intra' = 30 
    'OU=TestOU2,dc=test,dc=intra' = 30 
    'OU=TestOU3,dc=test,dc=intra' = 30 
} 
Edit: Die Änderung der Passwortrichtlinien hat leider nicht geholfen.
Nochmal kopieren und richtig anpassen dann lüppt das auch.
Warrender
Warrender 04.09.2015 um 15:06:16 Uhr
Goto Top
Danke face-wink

Noch zwei Fragen: Wie kann ich die z.b. Organisationseinheit OU=Test\firma\abteilung angeben?

Wenn ich das Skript ein zweites Mal laufen lasse, werden die Passwörter der bestehenden User überschrieben?
colinardo
colinardo 04.09.2015 aktualisiert um 20:03:20 Uhr
Goto Top
Zitat von @Warrender:
Noch zwei Fragen: Wie kann ich die z.b. Organisationseinheit OU=Test\firma\abteilung angeben?
Wie meinen ? Die User werden doch schon in der entsprechenden OU wie oben angeben erstellt, der DN ist nur eine andere Schreibweise zu deiner, nur rückwärts:
'OU=Abteilung,OU=Firma,OU=Test,dc=test,dc=intra'
Wenn ich das Skript ein zweites Mal laufen lasse, werden die Passwörter der bestehenden User überschrieben?
Das Skript ist nur für einmalige Ausführung vorgesehen, für einen erneuten Durchlauf müsste man es dahingehend modifizieren.

Für mehr Anpassung kannst du mich gerne via PM kontaktieren, das ist dann aber nicht mehr kostenlos...
Warrender
Warrender 04.09.2015 um 15:31:12 Uhr
Goto Top
Alles klar, danke!
Was mir nicht klar ist, wie ich die User in die OU "Abteilung" bekomme, wenn "Abteilung" in der OU "Firma" liegt und OU "Firma" in der OU "Test"....
colinardo
colinardo 04.09.2015, aktualisiert am 05.09.2015 um 09:18:15 Uhr
Goto Top
Zitat von @Warrender:
Was mir nicht klar ist, wie ich die User in die OU "Abteilung" bekomme, wenn "Abteilung" in der OU "Firma" liegt und OU "Firma" in der OU "Test"....
Siehe meinen letzten Kommentar, ist einfach nur rückwärts zu definieren.
LDAP Pfadnamen - Distinguished Names
SarekHL
SarekHL 05.09.2015 um 09:20:30 Uhr
Goto Top
Ich finde die ganzen hier vorgestellten Lösungen zu umständlich.

Ich habe seit Jahren sehr gute Erfahrungen mit dem Programm AD-Scripter von Innovasoft. Es wird zwar seit Jahren nicht mehr weiterentwickelt und unterstützt offiziell nur Server 2003, aber ich lege damit auch auf einem Server 2008 R2 regelmäßig neue Benutzeraccounts an.

Man trägt alle notwendigen Daten (Name, Vorname, Mailadresse, Gruppenzugehörigkeit, OU, ...) in eine Excel-Tabelle ein, importiert diese in das Programm, macht ein paar weitere Angaben (Stamm-OU, Domäne usw.) und das Programm generiert ein VBS-Script, dass man auf dem DC laufen lassen kann, um die Benutzer einzutragen.
SarekHL
SarekHL 05.09.2015 um 09:25:58 Uhr
Goto Top
Zitat von @SarekHL:

Es wird zwar seit Jahren nicht mehr weiterentwickelt und unterstützt offiziell nur Server 2003,

Kleine Korrektur: Es gibt inzwischen offenbar doch eine neuere Version. Zu der kann ich aber noch nichts sagen.