belloci
Goto Top

Useranlage via Powershell

Hallo liebe Admins,

ich bin gerade dabei unsere Benutzeranlage (so weit es geht) einfacher zu gestalten und zwar via Powershell (new-ADUser).

Ziel: Einen Active Directory Benutzer mit unseren gängigen Parametern erstellen.

Welche Parameter werden zwingend benötigt oder sollen gefüllt werden?

1) SamAccountName (Vorname.Nachname)
2) Givenname
3) Surname
4) Displayname (Nachname, Vorname)
5) Path ('CN=Users,DC=Test,DC=local)
6) OtherAttributes @{'personalTitle'=abc; 'personalPager'=def}
7) Die neu angelegten User sollen gleich Mitglied der Gruppe "TEST" sein
8) Remotedesktop-Profil (\\dc\profiles$\%username%) --> das funktioniert nicht, oder? Hatte mich schlau gemacht und da hieß es, dass das Profil unter "userparameters" gespeichert wird und nicht ohne weiteres gefüllt werden kann...

Ist das irgendwie mit der Powershell machbar? Hatte schon einige Versuche gestartet aber so richtig wollte das nicht laufen face-sad

Eigentlich benötigt man doch nur 2 Eingaben:

$Givenname = Read-Host "Vorname:"
$Surename = Read-Host "Nachname:"

und dann könnte es schon mit der Anlage losgehen:

new-ADUser -SamAccountName - Givenname -Surname -Displayname -Path -OtherAttributes

Für Anregungen bin ich wie immer sehr dankbar.

Content-ID: 213382

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

Printed on: December 13, 2024 at 02:12 o'clock

Dani
Dani Aug 05, 2013 at 11:52:14 (UTC)
Goto Top
Moin,
wie wäre es wenn du dein Versuchsskript auch posten würdest. Somit müsten wir nicht bei Null anfangen und du arbeitest auch aktiv gleich mit. Ich kann dir natürlich unser Script geben, aber da wirst du nicht glücklich.


Grüße,
Dani
Belloci
Belloci Aug 05, 2013 at 12:16:17 (UTC)
Goto Top
Hi Dani,

wie gerne würde ich jetzt ein schon fast fertiges Skript zeigen können wo nur noch ein Fehler ist und du sagst: "ist doch klar, mach das Komma weg, dann läufts". Leider habe ich das nicht weil ich in den Kinderschuhen stecke - wenn überhaupt. Ich erwarte hier kein fertiges Skript. Für einen Denkanstoß oder eine Starthilfe wäre ich schon dankbar.

Gruß
Markus1991
Markus1991 Aug 05, 2013 updated at 13:06:31 (UTC)
Goto Top
Hallo,

ich war in der selben Situation wie du und habe mich daraufhin etwas schlau gemacht...

Du benötigst zu aller erst erstmal das ActiveDirectory Modul, welches du direkt in der Powershell importieren kannst (auf dem DC versteht sich...)

Import-Module ActiveDirectory

danach legst du die benötigten Variablen fest, in meinem Fall waren es z. B. diese...

$name = (Read-Host "Name")
$vorname = (Read-Host "Vorname")
$beschreibung = (Read-Host "Beschreibung z. B. Abteilung")
$mail = $name+'deineDomain'
$pw = (Read-Host -AsSecureString "Passwort das vergeben werden soll")
$domain = [ADSI] "LDAP://DC=deineDomain,DC=lcl"
$exchange = "Name des Exchange Servers"

mehr Variablen habe ich nicht gebraucht. Und dann geht es mit New-ADUser weiter... hier gibt es alle möglichen Parameter, welche du sehr gut auf der Microsoft Seite nachlesen kannst. Verwende bei den Parametern deine Variablen die du ganz oben deklariert hast. Für die automatische Gruppenaufnahme in die Gruppe "Test" kannst du "Add-ADGroupMember" verwenden!!

Du kannst noch weitergehen und den Usern automatisch noch ein Postfach mit anlegen, oder ein eigenes Homelaufwerk zuordnen und diesen Vollzugriff gewähren...

Ich hoffe ich konnte dir einen kleinen Denkanstoss geben face-smile

Gruß
Markus
Belloci
Belloci Aug 05, 2013 at 13:13:56 (UTC)
Goto Top
Hi Markus,

danke erstmal für die Nachricht. Zum hinterlegen des Remotedesktop-Profils hast du wahrscheinlich keinen Ratschlag, oder?

Ansonsten, besten Dank für den Anstoß!
colinardo
colinardo Aug 05, 2013 updated at 14:42:47 (UTC)
Goto Top
Hallo Belloci,
das sollte Dir weiterhelfen:
Import-Module ActiveDirectory

$OU = "CN=Users,DC=Test,DC=local"  
$groupname = "TEST"  

$givenname = Read-Host -Prompt "Bitte Vornamen eingeben"  
$surname = Read-Host -Prompt "Bitte Nachnamen eingeben"  
$password = Read-Host -Prompt "Erst-Password des Benutzers eingeben" -assecurestring  

#User erstellen
New-ADUser -Name "$givenname $surname" -givenname $givenname -surname "$surname" -SAMAccountName "$givenname.$surname" -DisplayName "$surname, $givenname" -Path $OU -AccountPassword $password -enabled $true -OtherAttributes @{'personalTitle'="abc";'pager'="def"}  
#User zur Gruppe hinzufügen
Add-ADGroupMember -Identity $groupname -Member "$givenname.$surname"  

#Erweiterte Attribute für den User setzen (RemoteDesktop-Profilpfad)
$newUser = [ADSI] "LDAP://cn=$givenname $surname,$OU"  
$newUser.psbase.InvokeSet('TerminalServicesProfilePath',"\\dc\profiles\$givenname.$surname")  
$newUser.SetInfo()

Zum Hinzufügen erweiterter Attribute siehe auch meinen Kommentar hier

Grüße @colinardo
Dani
Dani Aug 05, 2013 at 13:17:58 (UTC)
Goto Top
Moin,
deine Begriffe einfach bei Google eingegeben und folgenden Microsoft Artikel gefunden. Du bist nicht der Erste der sowas versucht.

Ich kau dir nicht jeden Parameter vor. Wie gesagt ein Ansatz von dir und ich bin der Letzte der dir nicht hilft.


Grüße,
Dani
Belloci
Belloci Aug 05, 2013 at 13:29:23 (UTC)
Goto Top
Vielen Dank für Eure Mühe bis hier hin!
Belloci
Belloci Aug 05, 2013 at 19:29:27 (UTC)
Goto Top
Guten Abend,

dank des Scripts von Uwe gings es letztlich doch schneller. Nachdem ich mit folgendem Code gestartet war...

$Givenname = Read-Host "Vorname:"  
$Surename = Read-Host "Nachname:"  


new-ADUser -SamAccountName "$Givenname.$Surename" -Givenname $Givenname -Surname $Surname -Displayname "$Givenname $Surename" -Path 'CN=Users,DC=test,DC=local' -OtherAttributes @{'personalTitle'=abc; 'personalPager'=def}  

... und dies viele Fehler hatte und den Anforderungen (s. oben) nicht genügte und ich eure riesige Hilfe bekam sieht das Skript nun wie folgt aus:

              #Active Directory Modul laden
           Import-Module ActiveDirectory 
           
           $OU = "CN=Users,DC=test,DC=local"   
           $groupname = "Testgruppe"  
           $givenname = Read-Host -Prompt "Bitte Vornamen eingeben"   
              #Umlaute aussortieren
           $givenname = $givenname -replace (“ä”, “ae”) -replace (“ö”, “oe”) -replace (“ü”, “ue”) -replace (“ß”, “ss”)
           $surname = Read-Host -Prompt "Bitte Nachnamen eingeben"   
              #Umlaute aussortieren
           $surname = $surname -replace (“ä”, “ae”) -replace (“ö”, “oe”) -replace (“ü”, “ue”) -replace (“ß”, “ss”)
           $password = Read-Host -Prompt "Erst-Passwort des Benutzers eingeben" -assecurestring   
           
              #User erstellen
           
           New-ADUser -Name "$surname, $givenname" -givenname $givenname -surname "$surname" -SAMAccountName "$givenname.$surname" -UserPrincipalName "$givenname.$surname@test.local" -DisplayName "$surname, $givenname" -Path $OU -AccountPassword $password -enabled $true -OtherAttributes @{'personalTitle'="abc";'pager'="def"}  
           
           #User zur Gruppe hinzufügen
           Add-ADGroupMember -Identity $groupname -Member "$givenname.$surname"  
           
           #Erweiterte Attribute für den User setzen (RemoteDesktop-Profilpfad)
           
          $newUser = [ADSI] "LDAP://cn=$surname\, $givenname,$OU"   
          $newUser.psbase.InvokeSet('TerminalServicesProfilePath',"\\Server\profiles\$givenname.$surname")  
          $newUser.SetInfo()

Klappt alles soweit prima, entspricht genau meinen Anforderungen --> Fettes DANKE!

Gruß und schönen Abend
Dani
Dani Aug 06, 2013 at 08:27:53 (UTC)
Goto Top
Moin,
hast du den Teil mit den Umlauten getestet?
Unter Windows Server 2012 Powershell funktioniert es nicht.


Grüße,
Dani
Belloci
Belloci Aug 06, 2013 at 08:33:07 (UTC)
Goto Top
Hi Dani,

unter Windows 2008R2 läuft das korrekt... Komisch!

Gruß,
Norman
Dani
Dani Aug 06, 2013 at 08:35:11 (UTC)
Goto Top
Wir haben bisher eine Powershellfunktion dazu geschrieben. Da deine Variante aber einfach wäre, wollte ich Sie übernehmen. Aber das läuft nicht...
Belloci
Belloci Aug 06, 2013 at 08:42:02 (UTC)
Goto Top
Also ich kann dir soviel dazu sagen, dass hier PS in der Version 2 genutzt wird auf einem Server 2008R2.

Laufen tut es bei uns. Würde da gern für dich mitwirken, habe aber gerade keinen 2012 im Einsatz. Zu Hause kann ich aber gern mal schauen ob ich das irgendwie zum laufen bringe. Wird mich in Zukunft ja auch wieder beschäftigen...


Gruß,
Norman
Spoxss
Spoxss Jun 17, 2014 at 13:32:50 (UTC)
Goto Top
Auch wenn der Post hier schon etwas älter ist.
Unser PS User Anlage Script ist bereits 1099 Zeilen lang.
Dabei werden die Userdaten, wie Name. Abteilung, Standort, TerminalServices j/n , etc. abgefragt. Wir haben das mit dem einlesen einer Textdatei gelöst. Damit kann ich auch bspw. 200 User gleichzeitig anlegen.
Anhand dieser Daten erstellt unser Script den gewünschten User, berechtigt ihn mit den Standardberechtigungen der jeweiligen Abteilung, legt die persönlichen Shares, wie sein pers. Ordner, TS & Roaming Profil an und berechtigt diese entsprechend.
Zusätzlich werden die ganzen Daten, wie Adresse, Telefonnummer, TS Profilpfad, etc. in das Benutzerobjekt reingeschrieben.
Um das ganze noch abzurunden, findet vorab eine Prüfung statt, ob es das Objekt überhaupt schon gibt.
Lediglich Sonderwünsche müssen wir nur noch von Hand eintragen.
colinardo
colinardo Jun 17, 2014 updated at 13:50:38 (UTC)
Goto Top
Zitat von @Spoxss:
Unser PS User Anlage Script ist bereits 1099 Zeilen lang.
Schön für euch, dann lass die Community nicht dumm sterben und poste zumindest etwas produktives daraus. Dann haben alle was davon ...

Grüße Uwe
Spoxss
Spoxss Jun 17, 2014 at 14:14:46 (UTC)
Goto Top
Also ich weis ja nicht, was du alles wissen willst.
Aber hier mal ein paar Stichworte als Lösungsansatz. Bitte habe Verständnis dafür, das ich unser Script hier nicht poste.

Als erstes wird eine txt Datei mit Import-CSV eingelesen. Darin befinden sich im Header Spaltennamen mit einem Semikolon getrennt.
Der Befehl dazu ist Import-csv "Pfad zur Text Datei" -Delimiter ";" -Encoding Unicode
Wenn man mehrere User anlegen will, kann man da noch ein Schleifchen mir foreach drum binden face-big-smile

Mit einem get-ADUser -Filter {Name -like"administrator"} -properties * kannst Du dir alle Felder mit dem entsprechenden Namen anzeigen lassen.
Oder Du schaust im AD im Reiter Atrtribut-Editor. Dort sind auch alle Felder mit den entsprechenden Namen und Inhalten dargestellt.

Danach werden bei uns erstmal allerhand Varaiblen gebildet und mit den Informationen aus der Textdatei zusammengesetzt.
Mit diesen Variablen kannst Du dann deine Felder entsprechend befüllen.
Mit New-ADUser -SamAccountName $Variable1 - Name $Variable2 -Givenname $_.Vorname -EMailAddress $Variable3 ... usw.
kannst Du dir deinen User selber zusammen bauen.
Bei dem Attribut Givenname hole ich mi zB die Info aus der Textdatei, wo die Spalte eben mit dem Wert "Vorname" bezeichnet ist.
Das wäre mal eben so ein kleiner vllt 10 oder 20 Zeiler.

Meine Textdatei sieht zB so aus:
Vorname;Nachname;Abteilung;Beschreibung;TelNr;
Max;Mustermann;IT;IT-Systemadminsitrator;+43 123/456789-0;

So ausführlich wie das bei uns ist, muss man es nicht haben. Wir ergänzen das auch immer nur so, wenn wir denken, das da noch eine nützliche Funktion wie etwa eine Prüfung auf Umlaute oder eben die Anlage der Verzeichnisse, brauchen.

Ich denke, als sollte erst einmal als Lösungsansatz reichen. Alles nötige findest Du im TechNet.

Und so als Tip am Rande:
Fange mit den einfachen und grundlegenden Sachen, wie "nur" Useranlegen an und baue alles andere dann drum herum.
Dani
Dani Jun 17, 2014 at 14:41:08 (UTC)
Goto Top
Moin,
Auch wenn der Post hier schon etwas älter ist.
Bitte habe Verständnis dafür, das ich unser Script hier nicht poste.
Warum gräbst du überhaupt den alten Thread wieder aus? Das bringt niemand etwas außer das jeder neugierig auf dein Skript ist.


Grüße,
Dani
colinardo
colinardo Jun 17, 2014 updated at 14:44:56 (UTC)
Goto Top
Also ich brauche dazu bestimmt keine Hilfe face-big-smile. Über das simple Thema "Useranlage" bin ich schon lange hinaus face-wink bzw. schon zu lange im Geschäft.
Es ging nur darum das du deine Erfahrungen mit anderen Hilfesuchenden teilst die hier vorbei schauen.

Grüße Uwe