skid
Goto Top

vbscript und xcacls

Hi,

möchte gerne mit einem skript einen user auf einen ordner und unterverzeichnisse berechtigen.

habe das hier mal zusammengebastelt aber es funktioniert nicht so wie es soll - es macht nämlich überhaupt nichts außer das ein dos-fenster schnell auf und zu geht.

Dim strAccount        username
Dim wshShell

strAccount = testuser

Const strPath = \\domäne\freigabe\

Set wshShell = CreateObject("WScript.Shell")  

wshShell.Run "cscript C:\temp\xcacls.exe " & strPath & strAccount & " /E /T /G testuser:C",,True  

Set wshShell = Nothing
vielleicht hat ja einer eine idee was da falsch ist ?!

wenn ich es in einer dos-box per hand eingebe funktioniert alles.

gruss

SKID

Content-Key: 37166

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

Printed on: April 19, 2024 at 19:04 o'clock

Member: Biber
Biber Aug 02, 2006 at 13:45:00 (UTC)
Goto Top
Moin skid,
Lass uns mal damit anfangen, die Stringvariablen auch in Hochkommata einzuschließen und das formal verarbeitbar zu machen
Dim strAccount ' wozu stand in der Zeile noch.....username....?  
...
strAccount = "testuser"     ' so war es doch wohl gemeint, oder?  
Const strPath = "\\domäne\freigabe"  
...

Kommt der Schnipsel jetzt weiter?

Gruß
Biber
Member: skid
skid Aug 03, 2006 at 05:11:47 (UTC)
Goto Top
Moin Biber,

die Stringvariablen stehen bereits in Hochkommas, also so wie es auch sein sollte.
Ich hatte irgendwie Probleme mit der Formatierung als ich den Code eingefügt habe und dabei ist einiges verloren gegangen.

Das mit dem "username" hinter Dim strAccount war nur ein Kommentar. Auch hier ist das " ' " verlorengegangen.

Gruss
SKID
Member: Biber
Biber Aug 03, 2006 at 08:24:59 (UTC)
Goto Top
Moin skid,

dann schau Dir bitte die an, Dort steht, wie man/frau Code als Code formatieren kann. Nutze ich auch manchmal.

Das eigentliche Problem könnte sein, dass die Zeile "cscript whatever...." zwar vom CMD-Prompt aus klappt, weil ... die CMD.exe zwar nicht schlau ist, aber schon in einem bestimmten Kontext arbeitet.
Was sich unter anderem darin äußert, dass die Zeichenfolge "cscript" am Anfang einer CMD-Zeile interpretiert wird als...
- wenn kein interner CMD-Befehl als erstes Wort in der Zeile steht, dann..
- suche im aktuellen Verzeichnis nach cscript.COM, csript.EXE, cscript.BAT,...
[ usw.; alle Endungen, die in der Umgebungsvariablen %PATHEXT% stehen.
Beispiel: PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
- sollte die CMD.exe dabei nicht fündig werden, werden alle Verzeichnisse, die in der Variable %PATH% stehen nach derselben Mimik abgeklappert.
- wenn etwas "passendes" gefunden wird, dann wird "cscript.XXX" mit den angegebenen Parametern ausgeführt.

Für die Spawn-Funktion "Wscript.Shell.Run()" gilt das so nicht.
Wenn Du dort eine EXE/COM/BAT...-Datei aufrufen willst, musst Du die mit Pfad und Extension aufrufen.

So wäre zumindest meine theoretische Erklärung. Getestet habe ich es nicht.

Gruß
Biber
Member: skid
skid Aug 03, 2006 at 08:33:48 (UTC)
Goto Top
Hi Biber,

Du hattest recht - es war das "cscript".

Habe es weggelassen und schon hat es Funktioniert.
Da wurde wohl doch nach einer "cscript.exe, .bat" oder was auch immer gesucht.

Dank Dir für die Hilfe.

Gruss
SKID