Jump to content

VBS und IsMember


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen

 

Ich benötige einen Tipp für mein VBS-Problem. Ich verwende eine VBS-Logon script, welches Aufgrund der Gruppenzugehörigkeit die Laufwerke mappt.

 

If IsMember("APPBS1_Rimo_GG") Then
 WshNetwork.RemoveNetworkDrive "R:", True, True
 WshNetwork.MapNetworkDrive "R:", "\\server\share$", True
End If

Function IsMember(strGroup)
Dim objMember, objGroup
Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
If Err.Number = 0 Then
 IsMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUser)
Else
 IsMember = false
End If
End Function

 

Das Problem ist dass wenn mehrere Abfragen nacheinander gemacht werden, was meiner Meihnung nach der Sinn und Zweck dieses Scripts ist, nicht alle mappings durchgeführt werden. Es wird keine Fehlermeldung ausgegegeben. Wenn ich einen check mit "msgbox" einbaue, kommt die Text-Meldung inkl des Mappings. Entferne ich diese Code-Zeile wieder, werden die zusätzlichen Mappings weider nicht mehr hinzugefügt... :confused: Kann mir jemand von euch weiterhelfen?

 

Danke & Gruss,

TDM

Link zu diesem Kommentar

Also wenn du On Error Resume Next auschaltest und das Skript auf einen Fehler läuft, dann bricht es ab. Das heißt die nächste Zeile, die z.B. eine Fehlermeldung ausgibt wird nicht mehr angezeigt.

 

Daher erstelle ich in allen meine Funktionen oder Skripte ein eigenes Error Handling. Was mich persönlich etwas irritiert, ist dein Funktionsname. IsMember ist meiner Ansicht nach ein Schlüsselwort und sollte nicht als Funktionsnamen verwendet werden.

 

Gruß

 

Notesuser3

Link zu diesem Kommentar
Hallo zusammen

 

Ich benötige einen Tipp für mein VBS-Problem. Ich verwende eine VBS-Logon script, welches Aufgrund der Gruppenzugehörigkeit die Laufwerke mappt.

 

If IsMember("APPBS1_Rimo_GG") Then
 WshNetwork.RemoveNetworkDrive "R:", True, True
 WshNetwork.MapNetworkDrive "R:", "\\server\share$", True
End If

Function IsMember(strGroup)
Dim objMember, objGroup
Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
If Err.Number = 0 Then
 IsMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUser)
Else
 IsMember = false
End If
End Function

 

 

TDM

 

Du rufst die Funktion auch rekursiv auf, das kann so gar nicht richtig funktionieren.

 

Ändere mal den Functionnamen und rufe Sie entsprechend auf.

 

Notesuser3

Link zu diesem Kommentar
Du rufst die Funktion auch rekursiv auf, das kann so gar nicht richtig funktionieren.

 

Ändere mal den Functionnamen und rufe Sie entsprechend auf.

 

Notesuser3

 

Hallo notesuser3!

Danke für die Hinweise. Funktionsname anpassen krieg ich noch hin, aber kannst du mir beim "rekursiven aufrufen der Funktion" konkreter weiterhelfen?

 

Danke vielmals & Gruss,

TDM

Link zu diesem Kommentar
Hallo notesuser3!

Danke für die Hinweise. Funktionsname anpassen krieg ich noch hin, aber kannst du mir beim "rekursiven aufrufen der Funktion" konkreter weiterhelfen?

 

Danke vielmals & Gruss,

TDM

 

 

Das ist ganz einfach, wobei dies kein echt Rekrusiver Aufruf ist:

 

Aber Deine Funktion heißt bereits IsMember und in der Zeile

IsMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUser)

rufst Du die Funktion eigentlich wieder auf, bzw. weißt Ihr einen Wert zu und das kann nicht funktionieren.

 

Daher hatte ich empfohlen die Funktion umzubenennen.

 

Gruß

 

Notesuse3

Link zu diesem Kommentar

Ich habe das Script wie folgt angepasst:

 

If CheckMember("APPBS1_Rimo_GG") Then

WshNetwork.RemoveNetworkDrive "R:", True, True

WshNetwork.MapNetworkDrive "R:", "\\server\share$", True

End If

 

Function CheckMember(strGroup)

Dim objMember, objGroup

Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")

If Err.Number = 0 Then

CheckMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUser)

Else

CheckMember = false

End If

End Function

 

Leider bleibt der Effekt der selbe...

Link zu diesem Kommentar
Ich habe das Script wie folgt angepasst:

If CheckMember("APPBS1_Rimo_GG") Then

WshNetwork.RemoveNetworkDrive "R:", True, True

WshNetwork.MapNetworkDrive "R:", "\\server\share$", True

End If

 

Function CheckMember(strGroup)

Dim objMember, objGroup

Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")

If Err.Number = 0 Then

CheckMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUser)

Else

CheckMember = false

End If

End Function

 

 

Leider bleibt der Effekt der selbe...

 

Nun ja, Wo ist den die Variable strDomain und strUser deklariert bzw. woher sollten die beiden Variablen die Werte haben?

 

 

If CheckMember("APPBS1_Rimo_GG", "domain", "DonMigel") = TRUE Then

WshNetwork.RemoveNetworkDrive "R:", True, True

WshNetwork.MapNetworkDrive "R:", "\\server\share$", True

Else

MsgBOX "Der User gehört nicht zu dieser Gruppe",, "Fehler!"

End If

 

 

Function CheckMember(strGroup, strDomain, strUser)

 

Dim objMember, objGroup

Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")

If Err.Number = 0 Then

CheckMember = objGroup.IsMember("WinNT://" & strDomain & "/" & strUser)

CheckMember = TRUE

Else

CheckMember = false

End If

End Function

 

So ich habe jetzt ein bisschen was verbessert, was meiner Ansicht nach auf jeden Fall Falsch ist. Leider habe ich nächste Woche Urlaub, sonst würde ich das Skript für Dich testen und Dir die eine fertige Version schicken. Aber probiere es mal mit meinen Änderungen. Du musst nur die Übergabe Parameter anpassen.

 

Gruß

 

Marc

Link zu diesem Kommentar

Hallo Marc

 

Aufgrund deines Hinweises habe ich mich nochmals informiert und folgendes Script gefunden: Check Group Membership and Map Drives in a Logon Script

 

Nun wird zuerst die Gruppenmitgliedschaft ausgelesen und dann anhand dem die Laufwerke gemappt. Das Problem war vorhin, dass es ab der Gruppe "X" in einen Timeout lief...

 

Nun funktioniert es. Danke für deine Hilfe!

 

Gruss,

TDM

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...