Ich hatte keinen Bock 10 Benutzer händisch zu erstellen. Vor allem nicht, wenn Adresse und Gruppen an den Arbeitsplatz des Benutzers hängen. Also ein Skript von ungefähr 500 Zeilen zusammengeschrieben, welches die Benutzer automatisch auf Grundlage von verschiedenen Abhängigkeiten korrekt erstellen sollte.
Zur Lösung für die Schnellen:
https://liersch.it/2022/07/new-aduser-zeigt-fehler-der-server-kann-die-anforderung-nicht-ausfuhren-an/#Loesung
Psst, für jeden nicht ITler – das sind die Tricks wie faule Admins produktiv sind. 😉
Allerdings war nach kurzem Erfolg die Enttäuschung groß. Jedes Mal hatte ich bei mehreren Benutzern den gleichen Fehler: “Der Server kann die Anforderung nicht ausführen”
Na herzlichen Dank für diese aufschlussreiche Fehlermeldung. 🤡
Also was macht man? Erstmal fluchen und eine mögliche zu langsame Verbindung oder einem Session Timeout die Schuld geben. Nachdem ich dann vom lokalen Abfeuern der Befehle zum Abfeuern der Befehle über eine aufgebaute PSsession direkt auf dem DC hinübergegangen bin, funktionierte es also weiterhin nicht.
Na herzlichen Dank! 🤨
Also Recherche. Nur blöd, dass alle das Gleiche schreiben und der Fehler meist ein Syntaxfehler der Anderen ist, den ich natürlich nicht gemacht habe. Dennoch alles nach kontrolliert, hier und da mal was am Skript auskommentiert oder ausgetauscht. Uuuunnndddd – es funktioniert weiterhin nicht.
Na herzlichen Dank! 🙄
Die Verzweiflung macht sich breit, ob ich einfach nur zu dämlich bin oder irgendwas gravierendes einfach nicht verstanden habe. Beides läuft auf das gleiche hinaus, das Skript funktioniert nicht. Naja, also der erste Testbenutzer funktioniert normalerweise, nur die darauffolgenden Testkandidaten nicht – aber manchmal dann halt doch. Ich konnte mir einfach keinen Zusammenhang erschließen. Für mich war es logisch, eigentlich müsste es laufen – ein Spruch den man immer mal wieder von einem ITler hören kann. Auch mein Kollege hatte zwar versucht mir zu helfen, hat dann aber auch schnell aufgegeben und keine eindeutige Idee gehabt.
Gut, also – wir beide waren uns einig – ich muss das Skript auf das simpelste herunterbrechen. Also neu angefangen, wirklich nur die nötigsten Elemente integriert und siehe da. Es funktioniert weiterhin nicht.
Na herzlichen Dank! 🤪
DAS KANN DOCH NICHT SEIN. Meine Contenance habe ich eh bereits vor einem halben Tag aus dem Fenster geworfen und mein Kollege saß mir nur noch kopfschüttelnd, leicht kichernd aber auch etwas genervt gegenüber. “Hast du das Skript denn auf das nötigste runtergedampft?” “JA! Naja, halt das was für uns trotzdem benötigt wird, halt CSV auslesen und durch die Schleife schicken.” “Ja, dann mach doch mal ohne CSV.” In der Zwischenzeit hatte ich den Befehl natürlich auch händisch mit voreingetragenen Werten mehrfach abgeschickt, da hat das natürlich funktioniert…
Na gut, und dann kam’s – Der “Big Brain Moment”. Leicht kapituliert, nochmal kurz nachgedacht, bevor ich die Werte fest vorgebe, und muss feststellen: “Momentmal, mit dem Argument hatte ich doch am Anfang schon Probleme, aber das hatte ich ja dann gelöst.” Auskommentiert, das gekürzte Testskript abgefeuert – uuunnnnddddd es funktioniert. Nicht. Nein. Hat funktioniert, Party! 🎉🎉🎉
Aber dennoch war mein Gesichtsausdruck eher dieser hier: 😶😤
https://www.youtube.com/watch?v=t2Fp32UlpuI
“WTF, kann mir der Befehl nicht wieder ansagen, das ein NULL Wert an dieser Position nicht möglich ist?”
Lösung
New-ADUser -AccountPassword $SecureSessionPassword -DisplayName $SessionDisplayname -GivenName $Session.Vorname -Surname $Session.Nachname -Description $Session.Position -Title $Session.Position -EmailAddress $SessionUPN -SamAccountName $SessionSAMName -UserPrincipalName $SessionUPN -Name $SessionDisplayname -MobilePhone $Session.Mobile -OfficePhone $Session.Festnetz -Department $Session.Abteilung -OtherAttributes @{info=$Session.Titel} -Instance $VorlageSession -Path $SessionOU -Server $DCServer -ChangePasswordAtLogon $true -Enabled $true
Das betreffende Argument war “-OtherAttributes @{info=$Session.Titel}”. Alle anderen benutzerspezifischen Argumente lassen NULL-Werte zu, also Variablen die keinen Wert haben.
Außer dieses Argument.
Okay, Problem ist halt die Fehlermeldung. Die Fehlermeldung, das NULL Werte bei “OtherAttributes” nicht zugelassen werden, hatte ich nur durch Zufall am Anfang mitbekommen, weil ich statt “$Session.Titel” “$Session.Title” geschrieben hatte, also ein nicht vorhandenes Array übergeben hatte.
Titel soll den Doktortitel eines Mitarbeiters beinhalten und in das Anmerkungsfeld des Objektes eingetragen werden. Und bei meinen Tests habe ich natürlich nicht jedem Testbenutzer einen Doktortitel verpasst. Mir ist der Zusammenhang aber nicht weiter aufgefallen, weil vorher am Anfang die Fehlermeldung noch hieß:
“Das Argument für den Parameter “OtherAttributes” kann nicht überprüft werden. Das Argument ist NULL, oder ein Element der Argumentauflistung enthält einen NULL-Wert.”
Nun mit richtigem Array-Verweis war es aber halt diese Fehlermeldung:
“Der Server kann die Anforderung nicht ausführen”
Somit konnte ich zumindest keinen Zusammenhang erkennen. Weil, ist ja eine andere Fehlermeldung.
Quintessenz: Es ist immer wichtig ordentliche Fehlermeldung zu bekommen. Je besser die Fehlermeldung, umso schneller die Lösung. Und vielleicht hilft dieser Post jemand Anderem, der ebenfalls nichts unter den bekannten Webverweisen zu dem Powershell Fehler finden konnte.
“Und vielleicht hilft dieser Post jemand Anderem, der ebenfalls nichts unter den bekannten Webverweisen zu dem Powershell Fehler finden konnte.”
Ja das hat dieser Post getan, danke dir 🙂
Danke für dein Kommentar und es freut mich, dass ich mit dem Beitrag helfen konnte.