Schweizerin 1 Geschrieben 20. Juni 2016 Melden Teilen Geschrieben 20. Juni 2016 (bearbeitet) Ich benötige ein Skript, welches auf einem 2008 R2 (kein DC) ausgeführt wird und welches ein Verzeichnis in Abhängigkeit vom Nutzer anlegt und Rechte erzeugt. Als Beispiel sei ein Nutzer gegeben: Login: User Mehr als das ist mir erst einmal nicht bekannt. Wenn der Nutzer den Nachname Last hat und den Vorname First (entsprechend im AD so eingetragen), dann soll das Skript ein Verzeichnis namens LastF erzeugen und dem User daran ändern-Rechte erteilen. Für mein Verständis müsste das Skript erst einmal einen gültigen DC ermitteln, damit es Vorname und Nachname abfragen kann (oder kann ich so eine Anfrage einfach "ins AD werfen"?). Danach muss es den Vorname auf den ersten Buchstaben reduzieren, dann das Verzeichnis anlegen und dann noch das ändern-Recht hinzufügen. Ich würde das als Batch bevorzugen (BAT, CMD). Falls mir jemand Powershell-Code geben will, dann bitte etwas verständlich/ausfüührlich, denn ich habe davon nicht wirklich Ahnung. Wer kann mir helfen? bearbeitet 20. Juni 2016 von Schweizerin Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 20. Juni 2016 Melden Teilen Geschrieben 20. Juni 2016 Moin, allgemein geben wir hier Starthilfe und schreiben keine Skripte auf Anforderung. Die Logik hast du schon richtig dargestellt. Das Skript könnte den Loginnamen entgegennehmen und das AD nach Vor- und Nachname fragen. Sofern der User, der das Skript ausführt, Domänenmitglied ist, kann er einfach "das AD" fragen. So ein Skript sollte dann noch eine Fehlerbehandlung bekommen, falls die Namensfelder leer sind. Und es sollte Sonderzeichen passend behandeln. Per Batch ist das ziemlich fummelig, aber machbar. Zum Abfragen des AD könntest du dann AdFind von joeware.net nehmen. Für die String-Operationen könntest du mit FOR usw. arbeiten, aber das ist eben der fummelige Teil. Per PowerShell wird man das schnell und relativ elegant hinbekommen, nur muss man dafür ein wenig PowerShell können. Gruß, Nils Zitieren Link zu diesem Kommentar
matze-it 10 Geschrieben 20. Juni 2016 Melden Teilen Geschrieben 20. Juni 2016 ...hört sich für mich an als ob das Homelaufwerk des Benutzers beim ersten Anmelden angelegt werden soll... Sowas kannst du per GPP erledigen. Zitieren Link zu diesem Kommentar
Schweizerin 1 Geschrieben 20. Juni 2016 Autor Melden Teilen Geschrieben 20. Juni 2016 ...hört sich für mich an als ob das Homelaufwerk des Benutzers beim ersten Anmelden angelegt werden soll... Dann hast du falsch gehört. Per Batch ist das ziemlich fummelig, aber machbar. Zum Abfragen des AD könntest du dann AdFind von joeware.net nehmen. Für die String-Operationen könntest du mit FOR usw. arbeiten, aber das ist eben der fummelige Teil. Gibt es nix Windows-integriertes für AD-Abfragen auf einem 2008 R2? Wow! Mittlerweile habe ich herausgefunden, dass das mit den String-Operationen ganz einfach funktioniert. Siehe zum Beispiel: http://www.dostips.com/DtTipsStringManipulation.php Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 20. Juni 2016 Melden Teilen Geschrieben 20. Juni 2016 Habt ihr keine Auszubildenden oder Werkstudenten? Die sind meist recht fit was ActiveDirectory, LDAP, Scripting angeht bzw. können sich sich schnell in die Materie einarbeiten. Die Aufgabe wäre dafür absolut geeignet! Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 20. Juni 2016 Melden Teilen Geschrieben 20. Juni 2016 Moin, Gibt es nix Windows-integriertes für AD-Abfragen auf einem 2008 R2? Wow! doch, natürlich. Wie kommst du auf diese Schlussfolgerung? AdFind ist nur einfach sehr leistungsfähig, wenn es um solche Dinge geht. Mittlerweile habe ich herausgefunden, dass das mit den String-Operationen ganz einfach funktioniert. Siehe zum Beispiel: http://www.dostips.com/DtTipsStringManipulation.php Naja, wenn du das einfach findest ... es soll ja auch Leute geben, die sich die Hose mit einer Kneifzange anziehen. Gruß, Nils Zitieren Link zu diesem Kommentar
Schweizerin 1 Geschrieben 20. Juni 2016 Autor Melden Teilen Geschrieben 20. Juni 2016 doch, natürlich. Wie kommst du auf diese Schlussfolgerung? Kannst du mir dann bitte noch verraten oder Hinweise geben, wie ich Nachname und Vorname von USER mit Bordmitteln abfragen kann? Naja, wenn du das einfach findest ... es soll ja auch Leute geben, die sich die Hose mit einer Kneifzange anziehen. Wenn ich User (Login), Nachname und Vorname kenne, dann sind das vier Zeilen Batchcode. Eine Variable aus den Übergabeparametern erzeugen, String bearbeiten, Verzeichnis anlegen, Rechte festsetzen. Warum kompliziert wenn es auch einfach geht? Zitieren Link zu diesem Kommentar
lefg 276 Geschrieben 20. Juni 2016 Melden Teilen Geschrieben 20. Juni 2016 (bearbeitet) Guten Tag werte Schweitzerin, falls man von jemand etwas möchte zum Gotteslohn, beginnt es bei uns in der Regel mit der Höflichkeit eines Grusses, so ist es auch in der Regel Nr.6 des Boards empfohlen, erbeten. Auch das Wörtchen Bitte ist in der Eröffnung dieses Thread missing. Was meint eigentlich deine Mutter dazu? Mit freundlichem Gruß Edgar bearbeitet 21. Juni 2016 von lefg Zitieren Link zu diesem Kommentar
mba 133 Geschrieben 20. Juni 2016 Melden Teilen Geschrieben 20. Juni 2016 Was machst Du mit Lisa Meier und Lena Meier Zitieren Link zu diesem Kommentar
daabm 1.366 Geschrieben 20. Juni 2016 Melden Teilen Geschrieben 20. Juni 2016 Lisa und Lena find ich gut :) Ansonsten gibt es zum Thema AD User abfragen oder auch Stringmanipulationen Tausende von Samples - da bin ich bei Nils: Hier bekommst Du Hilfe zur Selbsthilfe, keine fertigen Rezepte. Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 21. Juni 2016 Melden Teilen Geschrieben 21. Juni 2016 Moin, Kannst du mir dann bitte noch verraten oder Hinweise geben, wie ich Nachname und Vorname von USER mit Bordmitteln abfragen kann? AD-Benutzer und -Computer, csvde, ldifde, dsquery, PowerShell. Und je nachdem, wie die Namen gepflegt sind, ginge auch net user. Gruß, Nils Zitieren Link zu diesem Kommentar
Schweizerin 1 Geschrieben 21. Juni 2016 Autor Melden Teilen Geschrieben 21. Juni 2016 Und je nachdem, wie die Namen gepflegt sind, ginge auch net user. Gruß, Nils Vielen Dank. Der Befehl net user USER /domain | find /i "Full Name" liefert mir die Daten, die ich brauche. :jau: Die Ausgabe ist im Endeffektk ein String, aus dem ich mir jetzt "nur" noch das extrahieren muss, was ich einzeln benötige. Wie kann ich eine Variable mit der Ausgabe des Befehls belegen, also wie kann ich einer Variable innerhalb eines Batchscripts sagen, dass sie jetzt "Full Name Nachname, Vorname" ist? Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 21. Juni 2016 Melden Teilen Geschrieben 21. Juni 2016 Moin, hähö, hast du nicht oben gesagt, das wäre doch ganz einfach mit ein paar Zeilen? :D Auch da gibt es vermutlich mehrere Wege, ich mach es immer über FOR. Gruß, Nils Zitieren Link zu diesem Kommentar
Schweizerin 1 Geschrieben 21. Juni 2016 Autor Melden Teilen Geschrieben 21. Juni 2016 Beim testen ist mir aufgefallen, dass ich das Verzeichnis besser Nachname_Vorname nennen sollte (will man bei Nachname_V bleiben, dann bereinigt man den Vorname mittels set vorname=%vorname:~0,1% Allerdings bleibt dann bei "Hans Peter" nur H übrig). Das sieht dann ohne Fehlerbehandlung so aus (es wird nur ein Parameter %1=USER übergeben): rem "Full Name" via net user extrahieren FOR /F "tokens=*" %%G IN ('net user %1 /domain ^| find /i "Full Name"') DO SET fullname=%%G rem Alles vor Name+Vorname entfernen (29 Zeichen) SET fullname=%fullname:~29% rem Nachname, Vorname aufteilen in Nachname und Vorname mit Komma als Trennzeichen for /f "tokens=1,2 delims=," %%a in ("%fullname%") do set nachname=%%a&set vorname=%%b rem Leerzeichen in Nachname entfernen set nachname=%nachname: =% rem Leerzeichen vor und in Vorname entfernen set vorname=%vorname: =% set vzname=%nachname%_%vorname% if not exist %vzname% md %vzname% if exist %vzname% ICACLS %vzname% /grant %1:(OI)(CI)M Vielen Dank für die Tipps! Letzte Frage: Wie kann ich dafür sorgen, dass am Ende des Skripts alle Variablen wieder gelöscht sind. Einzeln geht es mit set variable= Gibt es einen pauschalen Weg alle gesetzten Variablen zu löschen? Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 22. Juni 2016 Melden Teilen Geschrieben 22. Juni 2016 Moin, du müsstest alle Variablen einzeln löschen. Da die Shell nicht zwischen Skriptvariablen und Sitzungsvariablen unterscheidet, würdest du alle wohl nicht löschen wollen. Oder du schließt das CMD-Fenster und machst für den nächsten Durchlauf ein neues auf. Gruß, Nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.