thl1966
Goto Top

VBS - Berechtigungen ändern klappt nicht

Habe ein seltsames Problem in VB-Skript.

Möchte gerne über ein Skript Berechtigungen an einem bestimmten Netzwerkordner bzw. Freigabe hinzufügen.

Da ich aber ca. 2000 Anwender berechtigen muss, möchte ich das logischerweise nicht manuell tun.

Wenn ich das Kommand icacle in einer Eingabeaufforderung starte, dann klappt es auch.

Z.B. : so

icacls \\Servername\Shareverteichnis$\BenutzerID /inheritance:e /grant Benutzernameface-sadOI)(CI)M

Wenn ich das ganze über VBSkript mache kommt immer zu einem Fehler 5 (Ausführung über objShell).

Hier der Code:

Dim strOrdner, strBenutzername

strOrdner = "\\Server\Freigabeordner$\Benutzer.ID"
strBenutzername = "BenutzerXYZ.ID"

SetACL


Function SetACL()
Dim intFehler, objShell, objFSO

Set objShell = CreateObject("Wscript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strOrdner) Then

strACL = "icacls \\Servername\Freigabeordner$\Benutzername.ID /inheritance:e /grant Benutzer.IDface-sadOI)(CI)M"
intFehler = objShell.Run (strACL,2,True)

If intFehler <> 0 Then
Wscript.Echo "Fehler beim zuweisen der Berechtigung für Benutzer: " & strBenutzername & " - Ordner: " & strOrdner & " Fehlercode: " & intFehler
End If
Else
Wscript.Echo "Fehler: Ordner: " & strOrdner & " ist nicht vorhanden!"
End If
End Function

Content-Key: 207552

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

Ausgedruckt am: 29.03.2024 um 12:03 Uhr

Mitglied: Penny.Cilin
Penny.Cilin 05.06.2013 aktualisiert um 13:55:54 Uhr
Goto Top
Zitat von @thl1966:

Wenn ich das ganze über VBSkript mache kommt immer zu einem Fehler 5 (Ausführung über objShell).

Hallo, (das Grüssen haste aber vergessen)

Das bedeutet Access denied.
Hast Du das Skript in einer administrativen CLI (Commandline Interface) => Eingabeaufforderung als Administrator gestartet?


P.S. Mittels
 net helpmsg 5
bekommst Du den Text der Fehlermeldung angezeigt.


Gruss Penny.
Mitglied: thl1966
thl1966 05.06.2013 um 14:24:18 Uhr
Goto Top
Habe rausgefunden, dass es tatsächlich daran liegt, dass der Zugriff verweigert wird.

Wenn ich die CMD.EXE als Admin starte und den Befehl dort ausführe geht es.

Aber: Wie kann ich dem Skript beibringen die CMD.EXE als Administrator zu starten, ohne das der Benutzer beim Loginskript (Hier wird das später eingebaut) ein Benutzername und Kennwort eingeben muss.

Vielen Dank im Voraus.
Mitglied: Penny.Cilin
Penny.Cilin 05.06.2013 um 14:53:39 Uhr
Goto Top
Nutze mal die Suchfunktion. Ich meine daß hatten wir schonmal.
Mitglied: bastla
bastla 05.06.2013 aktualisiert um 15:32:48 Uhr
Goto Top
Hallo thl1966!

Warum soll das über ein Loginscript laufen? Wenn die Änderung der Berechtigungen für alle Benutzer erfolgen soll, könntest Du das ja auch gleich per Schleife erledigen ...

... per CMD am Server in etwa so:
for /d %i in ("D:\Freigegebener Ordner\*.*") do echo icacls "%i" /inheritance:e /grant %~nxi:(OI)(CI)M
Das "echo" sorgt dafür, dass die "icacls"-Befehle (zum Testen) nur angezeigt werden.

Grüße
bastla

P.S.: Deine gepostete Befehlszeile würde viel weniger traurig aussehen, wenn Du "Code"-Formatierung verwendet hättest (lässt sich aber auch nachträglich noch bewerkstelligen) ...