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 BenutzernameOI)(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.IDOI)(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
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 BenutzernameOI)(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.IDOI)(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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 207552
Url: https://administrator.de/contentid/207552
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
4 Kommentare
Neuester Kommentar
Zitat von @thl1966:
Wenn ich das ganze über VBSkript mache kommt immer zu einem Fehler 5 (Ausführung über objShell).
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
Gruss Penny.
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:
Das "
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) ...
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
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) ...