laufwerke-group.vbs

Um die Laufwerksskript in anhängigkeit zu Gruppenmitgliedschaften zu mappen können entweder verschiedene Gruppenrichtlinien mit verschiedenen Skripten erstellt werden oder man lässt das Skript die Überprüfung durchführen:


' laufwerke.vbs - Einbindung der Netzlaufwerke
' Author Christoph Goth
' -----------------------------------------------------------------'

Option Explicit
Dim WSHNetwork, strRemotePath1, strRemotePath2, strRemotePath3
Dim strDriveLetter1, strDriveLetter2, strDriveLetter3
Dim objUser, CurrentUser, strGroup, FSO, strUserName, strUserDomain, ObjGroupDict, EnvVar, strVarUserName
Set WSHNetwork = CreateObject("WScript.Network")

' Variablen Definieren und Wartezeit setzen
strUserName = ""
While strUserName = ""
WScript.Sleep 100
strUserName = WSHNetwork.UserName
Wend
strUserDomain = WSHNetwork.UserDomain
Set ObjGroupDict = CreateMemberOfObject(strUserDomain, strUserName)

Function MemberOf(ObjDict, strKey)
MemberOf = CBool(ObjGroupDict.Exists(strKey))
End Function

' Benutzer-Gruppe Bestimmen
Function CreateMemberOfObject(strDomain, strUserName)
Dim objUser, objGroup
Set CreateMemberOfObject = CreateObject("Scripting.Dictionary")
CreateMemberOfObject.CompareMode = vbTextCompare
Set objUser = GetObject("WinNT://" & strDomain & "/" & strUserName & ",user")
For Each objGroup In objUser.Groups
CreateMemberOfObject.Add objGroup.Name, "-"
Next
Set objUser = Nothing
End Function

' Definition der Laufwerke und Pfade
strDriveLetter1 = "G:"
strDriveLetter2 = "H:"
strDriveLetter3 = "I:"
strRemotePath1 = "\\SERVER\FREIGABE1"
strRemotePath2 = "\\SERVER\FREIGABE2"
strRemotePath3 = "\\SERVER\FREIGABE3"

' Zuordnung der Pfade und Laufwerke
If MemberOf(ObjGroupDict, "GRUPPE1") Then
WSHNetwork.MapNetworkDrive strDriveLetter1, strRemotePath1
End If

If MemberOf(ObjGroupDict, "GRUPPE2") Then
WSHNetwork.MapNetworkDrive strDriveLetter2, strRemotePath2
Else
WSHNetwork.MapNetworkDrive strDriveLetter3, strRemotePath3
End If

' Ende des Windows Logon Scripts
Wscript.Quit

Eingebaut ist hier das Mapping für GRUPPE1, wenn der Benutzer hier Mitglied ist wird der Laufwerk eingebunden, wenn nicht dann nicht.
Bei GRUPPE2 wird wenn er Mitglied ist H: eingebunden, wenn nicht dann I:.
Um mehrere Gruppen zu überprüfen ist es das einfachste die erste Abfrage zu kopieren, bei komplexeren wie „MemberOf GRUPPE1 und GRUPPE2“ sind nach meiner Erfahrung Verschachtelungen der Abfragen am übersichtlichsten:


If MemberOf(ObjGroupDict, "GRUPPE1") Then
If MemberOf(ObjGroupDict, "GRUPPE2") Then
WSHNetwork.MapNetworkDrive strDriveLetter2, strRemotePath2
End If
Else
WSHNetwork.MapNetworkDrive strDriveLetter1, strRemotePath1
End If

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert