VBS Befehl als string zusammenbasteln und dann per run ausführen
Hi,
ich will cacls per vbscript - run mehtode staten.
Irgendas geht schief. Gibts in vbs nicht wie in Powershell die Möglichkeit einen Befehl als String zusammensetzen und ihn dann auszuführne?
(wie invoke-expression in Powershell.)
Hier mein code vieleicht findet ja jemand meinen Fehler:
set fso = CreateObject("Scripting.FileSystemObject")
set onet = CreateObject("Wscript.Network")
set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objShell = CreateObject("Shell.Application")
set oSA = CreateObject("Shell.Application")
sTMP = WshShell.ExpandEnvironmentStrings("%temp%") & "\"
tp = stmp & "cacls.exe"
sDesktop = WshShell.SpecialFolders("Desktop") & "\"
WshShell.Run "cmd /c " & tp & " " & sDesktop & " /E /P ad\" & oNet.Username & ":R",3,true
Danke SC!
ich will cacls per vbscript - run mehtode staten.
Irgendas geht schief. Gibts in vbs nicht wie in Powershell die Möglichkeit einen Befehl als String zusammensetzen und ihn dann auszuführne?
(wie invoke-expression in Powershell.)
Hier mein code vieleicht findet ja jemand meinen Fehler:
set fso = CreateObject("Scripting.FileSystemObject")
set onet = CreateObject("Wscript.Network")
set WshShell = Wscript.CreateObject("Wscript.Shell")
Set objShell = CreateObject("Shell.Application")
set oSA = CreateObject("Shell.Application")
sTMP = WshShell.ExpandEnvironmentStrings("%temp%") & "\"
tp = stmp & "cacls.exe"
sDesktop = WshShell.SpecialFolders("Desktop") & "\"
WshShell.Run "cmd /c " & tp & " " & sDesktop & " /E /P ad\" & oNet.Username & ":R",3,true
Danke SC!
Please also mark the comments that contributed to the solution of the article
Content-Key: 167988
Url: https://administrator.de/contentid/167988
Printed on: April 26, 2024 at 15:04 o'clock
9 Comments
Latest comment
Er möchte Berechtigungen setzen, (hoffe ich), von daher gehe ich davon aus er meinte CACLS,
welche sich bei mir aber nicht im TEMP-Ordner sondern unter %SYSTEMROOT%\System32 befindet...
Desweiteren fehlen meiner Meinung nach Leerzeichen in der Befehlszeile.
UND: Wenn Leerzeichen in den Pfadangaben verwendet werden, (%TEMP% = "C:\dokumente und einstellungen\user\temp" oder wie auch immer)
nicht die Anführungszeichen vergessen
Ich bevorzuge was das angeht eher ... & Chr(34) & ... anstelle von Dingen, wie """" oder " """
Gruß
Dominique
welche sich bei mir aber nicht im TEMP-Ordner sondern unter %SYSTEMROOT%\System32 befindet...
Desweiteren fehlen meiner Meinung nach Leerzeichen in der Befehlszeile.
UND: Wenn Leerzeichen in den Pfadangaben verwendet werden, (%TEMP% = "C:\dokumente und einstellungen\user\temp" oder wie auch immer)
nicht die Anführungszeichen vergessen
Ich bevorzuge was das angeht eher ... & Chr(34) & ... anstelle von Dingen, wie """" oder " """
Gruß
Dominique
Und als weiterer Tipp:
Nie davon ausgehen, daß der Computer macht was er soll.
Will sagen:
Nachkontrollieren ob Dein String richtig zusammengebaut ist könnte helfen:
Dann siehst Du nämlich, was Du tatsächlich versuchst auszuführen und das könnte man dann auch mal direkt in einer CMD ausprobieren.
Dann sieht man auch, daß als Ergebnis dies kommt:
Und da sieht man doch innerhalb von ca. 0,5 Sekunden, wo das Problem ist, oder nicht?
Wie sagte doch Prof. Tanenbaum: Ein guter Programmierer braucht nur seinen Kopf und ein printf (bei vbs halt wscript.echo) zum Debuggen.
Nie davon ausgehen, daß der Computer macht was er soll.
Will sagen:
Nachkontrollieren ob Dein String richtig zusammengebaut ist könnte helfen:
sExec="cmd /c " & tp & " " & sDesktop & " /E /P ad\" & oNet.Username & ":R"
wscript.echo sExec
WshShell.Run sExec,3,true
Dann sieht man auch, daß als Ergebnis dies kommt:
cmd /c c:\temp\cacls.exe C:\Dokumente und Einstellungen\xxx\Desktop\ /E /P ad\xxx:R
Wie sagte doch Prof. Tanenbaum: Ein guter Programmierer braucht nur seinen Kopf und ein printf (bei vbs halt wscript.echo) zum Debuggen.