norbert32
Goto Top

Probleme bei cmd - Script

Hallo alle,

ich habe auf folgender Seite ein super Script gefunden, um Benutzer in einem Rutsch anzulegen:
http://www.it-academy.cc/article/1173/Benutzer+per+Script+im+Active+Dir ...

Dort ist auch eine Batchdatei um Verzeichnisse anzulegen und Rechte zu setzen.
Leider funktioniert diese -wie dort angegeben nicht auf einem Windows 2008 R2 Server.

md
echo J | cacls /C /E /G Administratoren:F
echo J | cacls /C /E /G Domain.TopLevelDomain
echo J | cacls /C /E /R Jeder
md
echo J | cacls /C /E /G Administratoren:F
echo J | cacls /C /E /G Domain.TopLevelDomain
echo J | cacls /C /E /R Jeder

Ich hab sie schon geändert in :

md \\Server\daten\profile\%1
echo J | cacls /C /E /G Administratoren:F
echo J | cacls /C /E /G Domain.TopLevelDomain
echo J | cacls /C /E /R Jeder
md \\Server\daten\home\%1
echo J | cacls /C /E /G Administratoren:F
echo J | cacls /C /E /G Domain.TopLevelDomain
echo J | cacls /C /E /R Jeder

Das script spuckt ein Haufen Fehler aus.. Bin leider kein Profi in der Hinsicht. Wäre daher nett, wenn mir jemand einen Tipp geben könnte.

Danke schon mal,
Norbert

Content-ID: 166129

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

Ausgedruckt am: 20.11.2024 um 02:11 Uhr

Biber
Biber 12.05.2011 um 12:08:15 Uhr
Goto Top
Moin norbert32,

Zitat von @norbert32:
Das script spuckt ein Haufen Fehler aus.. Bin leider kein Profi in der Hinsicht. Wäre daher nett, wenn mir jemand einen Tipp geben könnte.
Der Ex-Doktor Karl Theodor hat doch eindrucksvoll bewiesen, dass niemand ein Profi sein muss, um ein bisschen Copy&paste zu machen.
Das schaffst du auch!

Also poste doch bitte die Fehlermeldungen.
Und wenn du ohnehin am Nachbessern bist - magst du deinen Code in die so ungeliebten Code-Tags setzen?

Danke & Gruss
Biber
norbert32
norbert32 12.05.2011 um 14:55:04 Uhr
Goto Top
Hallo Biber,

ich hab's tatsächlich gefunden... face-wink

Ok... md klappt natürlich..

Hier jetzt mal ein paar Fehlermeldungen:


D:\IT>echo J | cacls /C /E /G Administratoren:F

Hinweis: Cacls ist veraltet. Verw. Sie Icacls.

Zeigt Datei-ACLs (Access Control List) an o. bearbeietet sie.

CACLS Dateiname [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G Benutzer:Berechtig.]
        [/R Ben. [...]] [/P Ben.r:Berechtig. [...]] [/D Benutzer [...]]
    Dateiname Zeigt ACLs an.

Ich hab auch schon mal Icalcs probiert, dann gibt's sowas:


D:\IT>echo J | Icacls /C /E /G Administratoren:F
Der erste Parameter muss ein Dateinamensmuster oder "/?" sein.

ICACLS name /save aclfile [/T] [/C] [/L] [/Q]
    Speichert die DACLs für die Dateien und Ordner mit übereinstimmen
    zur späteren Verwendung mit "/restore" in der ACL-Datei. SACLs,
    Besitzer oder Integritätsbezeichnungen werden nicht gespeichert.


Mir ist nicht so richtig klar, wie calcs und Icalcs wissen soll, auf welches Verzeichnis die Rechte angewandt werden soll....

Vielen Dank schon mal,
Norbert

P.S: Das Script wird im Augenblick aufgerufen mit script.cmd BENUTZERNAME.
Der ursprüngliche Aufruf aus dem anderen Script ist: ret = WshShell.Run ("verz.cmd " & Benutzer,0,1)
bastla
bastla 12.05.2011 um 15:14:31 Uhr
Goto Top
Hallo norbert32!
Mir ist nicht so richtig klar, wie calcs und Icalcs wissen soll, auf welches Verzeichnis die Rechte angewandt werden soll....
... eventuell indem Du es (siehe Hilfe) an der richtigen Stelle hinschreibst? face-wink

Grüße
bastla
norbert32
norbert32 16.05.2011 um 05:46:36 Uhr
Goto Top
Hallo bastla,

hmm, wie schon gesagt, ich hab das Script von Benutzer per Script im Active Directory anlegen....

Dort wird es in ein Batch-Script zum erstellen von verschiedenen Usern eingebunden. Und ich dachte, dass es 'irgendwie' so funktionieren müsste.... face-wink

Wäre denn dieser Aufruf korrekt:

 md \\Server\daten\profile\%1 
 echo J | cacls \\Server\daten\profile\%1 /C /E /G Administratoren:F

Danke schon mal,
Norbert

[Edit Biber] Link angepasst [/Edit]
bastla
bastla 16.05.2011 um 08:08:53 Uhr
Goto Top
Hallo norbert32!
Wäre denn dieser Aufruf korrekt:
Das sollten Deine Tests ja ohnehin schon ergeben haben ... face-wink

... wobei ich im Zweifelsfall die Rechte gänzlich neu setzen (= ohne "/E") und auch sämtliche zu berechtigenden User / Gruppen in einer Zeile unterbringen würde - also etwa:
echo J|cacls \\Server\daten\profile\%1 /C /G Administratoren:F %1:F
Grüße
bastla
norbert32
norbert32 16.05.2011 um 14:54:47 Uhr
Goto Top
Hallo Bastla,

ich war ein wenig voreilig... face-wink

Ja, ich hab es getestet.. Und es hat auch funktioniert... Nur leider hab ich nicht aufgepasst.
Nun hängt bei jedem Benutzer noch der User Benutzer mit drin. Den würde ich aber gerne wieder rausnehmen....
(Möglichst nicht händisch...)

Kennst du eine Variante alle Verzeichnisse einzulesen und den Benutzer Benutzer zu löschen???

Dank wieder,
Norbert
(Ist der Benutzer Benutzer vererbt...?)
bastla
bastla 16.05.2011 um 15:48:23 Uhr
Goto Top
Hallo norbert32!

Könnte etwa so gehen (direkt aus der CMD-Shell; in einem Batch mit jeweils %%i):
for /d %i in (\\Server\daten\profile\*) do echo cacls "%i" /C /E /R Benutzer
Wenn dann das angezeigt wird, was Du möchtest (und Du kannst einen der angezeigten Befehle einfach kopieren und testweise von der Kommandozeile ausführen), das "echo"entfernen.
(Ist der Benutzer Benutzer vererbt...?)
Nicht, wenn Du meiner vorherigen Empfehlung folgend die Rechte neu gesetzt hast ... face-wink

Grüße
bastla