fjoerdman 10 Geschrieben 10. September 2007 Melden Teilen Geschrieben 10. September 2007 Hallo zusammen, ich habe mir folgendes LoginScript gebaut. Leider habe ich das problem, dass die Laufwerksbuchstaben nicht gelöscht werden, wenn der Benutzer nicht mehr Mitglied der AD-Gruppe ist. Hat jemand eine Idee? ON ERROR RESUME NEXT '========================================================================== ' Variables '========================================================================== Dim objNet, strUser, strDomain, strComputer, objShell, objUser, objDomain '========================================================================== ' Creating the objects and predefine the variables '========================================================================== Set objNet = CreateObject("WScript.Network") Set objShell = CreateObject("WScript.Shell") '========================================================================== ' Automatically find the Domain name '========================================================================== Set objDomain = getObject("LDAP://rootDse") strDomain = objDomain.Get("dnsHostName") strUser = objNet.UserName strComputer = objNet.ComputerName Set objUser = GetObject("WinNT://" & strDomain & "/" & strUser) '========================================================================== 'Now check for group memberships and map appropriate drives '========================================================================== For Each GroupObj In objUser.Groups Select Case LCase(GroupObj.Name) Case "_gf" objNet.RemoveNetworkDrive "G:", True, True WScript.sleep 300 objShell.Run("net use G: \\kaisksbs1\Daten\_gf") Case "_finanz" objNet.RemoveNetworkDrive "F:", True, True WScript.sleep 300 objShell.Run("net use F: \\kaisksbs1\Daten\_Finanz") Case "_controlling" objNet.RemoveNetworkDrive "K:", True, True WScript.sleep 300 objShell.Run("net use K: \\kaisksbs1\Daten\_controlling") Case "_vertrieb" objNet.RemoveNetworkDrive "V:", True, True WScript.sleep 300 objShell.Run("net use V: \\kaisksbs1\Daten\_Vertrieb") End Select Next '========================================================================== ' Cleaning up the used memory '========================================================================== Set objNet = Nothing Set strUser = Nothing Set strDomain = Nothing Set strComputer = Nothing Set objShell = Nothing Set objUser = Nothing Set objDomain = Nothing '========================================================================== 'Quit the Script '========================================================================== WScript.quit grüße Jens Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. September 2007 Melden Teilen Geschrieben 10. September 2007 Einfach die "RemoveNetworDrive"-Statements kpl. VOR der Case-Abfrage einbauen, so dass grundsätzlich erst alle Laufwerke gelöscht und dann abhängig von den Gruppen neu zugeordnet werden. Zitieren Link zu diesem Kommentar
fjoerdman 10 Geschrieben 10. September 2007 Autor Melden Teilen Geschrieben 10. September 2007 okay, habe das Script jetzt so umgebaut und bekomme einen Syntax Fehler: ON ERROR RESUME NEXT '========================================================================== ' Variables '========================================================================== Dim objNet, strUser, strDomain, strComputer, objShell, objUser, objDomain '========================================================================== ' Creating the objects and predefine the variables '========================================================================== Set objNet = CreateObject("WScript.Network") Set objShell = CreateObject("WScript.Shell") '========================================================================== ' Automatically find the Domain name '========================================================================== Set objDomain = getObject("LDAP://rootDse") strDomain = objDomain.Get("dnsHostName") strUser = objNet.UserName strComputer = objNet.ComputerName Set objUser = GetObject("WinNT://" & strDomain & "/" & strUser) '========================================================================== 'Now check for group memberships and map appropriate drives '========================================================================== For Each GroupObj In objUser.Groups Select Case LCase(GroupObj.Name) objNet.RemoveNetworkDrive "G:", True, True objNet.RemoveNetworkDrive "F:", True, True objNet.RemoveNetworkDrive "I:", True, True objNet.RemoveNetworkDrive "K:", True, True objNet.RemoveNetworkDrive "V:", True, True Case "_gf" WScript.sleep 300 objShell.Run("net use G: \\kaisksbs1\Daten\_gf") Case "_finanz" WScript.sleep 300 objShell.Run("net use F: \\kaisksbs1\Daten\_Finanz") Case "_controlling" WScript.sleep 300 objShell.Run("net use K: \\kaisksbs1\Daten\_controlling") Case "_vertrieb" WScript.sleep 300 objShell.Run("net use V: \\kaisksbs1\Daten\_Vertrieb") Zitieren Link zu diesem Kommentar
Squire 262 Geschrieben 10. September 2007 Melden Teilen Geschrieben 10. September 2007 ansonsten hilft auch ein net use /persistent:no wird dieser Parameter gesetzt, dann sind die folgenden Mappings nur für die Anmeldesitzung gesetzt - sprich sie sind nicht dauerhaft und werden auch nicht automatisch wiederhergestellt Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 10. September 2007 Melden Teilen Geschrieben 10. September 2007 Kanns denn auch eine Batch sein? Anmelde Skripe - Möglichkeiten und Funktionen Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 11. September 2007 Melden Teilen Geschrieben 11. September 2007 DU musst die Removes OBERHALB der For-Schleife plazieren! ... '========================================================================== 'Now check for group memberships and map appropriate drives '========================================================================== objNet.RemoveNetworkDrive "G:", True, True objNet.RemoveNetworkDrive "F:", True, True objNet.RemoveNetworkDrive "I:", True, True objNet.RemoveNetworkDrive "K:", True, True objNet.RemoveNetworkDrive "V:", True, True For Each GroupObj In objUser.Groups Select Case LCase(GroupObj.Name) Case "_gf" WScript.sleep 300 objShell.Run("net use G: \\kaisksbs1\Daten\_gf") ... Zitieren Link zu diesem Kommentar
~~~Dexter~~~ 10 Geschrieben 11. September 2007 Melden Teilen Geschrieben 11. September 2007 @fjordman Wieso benutzt Du das Kommandozeilentool "net use" in Dein VB-Skript? Mit Hilfe der MapNetworkDrive-Methode kannst Du freigegebene Netzlaufwerke zum Computersystem hinzufügen. Syntax: object.MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile], [strUser], [strPassword]) So trennst Du alle vorhandene Netzlaufwerke. Set objNetworkDrives = objNet.EnumNetworkDrives For i = 0 To objNetworkDrives.Count -1 Step 2 objNet.RemoveNetworkDrive objNetworkDrives.Item(i), True, True Next Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.