Jump to content

Batch/Powershell: Verzeichnis mit Rechten in Abhängigkeit vom Username anlegen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 von Schweizerin
Link zu diesem Kommentar

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

Link zu diesem Kommentar

...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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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?

Link zu diesem Kommentar

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 von lefg
Link zu diesem Kommentar

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?

Link zu diesem Kommentar

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?

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...