[win2k] Controleren of user in een groep zit (op domein)

Pagina: 1
Acties:

  • freaky
  • Registratie: September 2000
  • Laatst online: 18-05 12:54
Hoi hoi,

met behulp van wat voorbeeldjes heb ik een VBS functie geschreven die zou moeten controleren of een gebruiker in een groep zit op het domein (windows 2000 AD native mode). In eerste instantie leek het script goed te werken, als ik als administrator wat tests deed met checks op de user administrator en groepen als "Domain Admins" ging alles goed. Ook de check op de globale groepen is goed (waar admin niet in zit). Afhankelijk van in welke groep een gebruiker zit moeten er wat registry entries weggeschreven worden, deze code werkt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
For Each objComputer in colSettings     
    StrComputerName = objComputer.Name
    If StrComputerName = "RBRATS001" or StrComputerName = "RBRATS002" then

        If VerifyGroupMembership ( strDomain, "GG-ADM-KM-Absent_voor_Windows", strUserName ) Then
            ' Hier staat de code die registry entries schrijft
        End If
        If VerifyGroupMembership ( strDomain, "GG-ADM-KH-Absent_voor_Windows", strUsername ) Then
                        ' Hier staat de code die registry entries schrijft.
           End If
    End If
Next

' Based on VerifyGroupMembers by Rowen Bankx found at www.freevbcode.com/ShowCode.Asp?ID=4891
Function VerifyGroupMembership( strDomain, strGroup, strUser )

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

    For Each objUser In objGroup.Members

        'WScript.Echo "Checking Membership for " & objUser.Name & "..."
        
        If( UCase( Trim( strUser ) ) = UCase( Trim( objUser.Name ) ) ) Then
            'WScript.Echo "Member found: " & objUser.Name
            bMemberFound = True
            Exit For
        End If

    Next

    If ( Not bMemberFound ) Then
        VerifyGroupMembership = False
        Exit Function
    End If

    VerifyGroupMembership = True
End Function


Voor de duidelijkheid de gebruikers zitten in globale groepen opverdeeld, deze globale groepen (bijv. directie, sectieleiders e.d.) zitten in groepen die toegang geven tot applicaties danwel folders (bijv. word), dit zijn ook globale groepen. Het zijn de laatste groepen die ik wil controleren.

Het vreemde is ik heb dit als 2 gebruikers getest, beiden zitten in dezelfde groepen. Voor de ene gebruiker zijn beide tests waar, voor de andere allebei niet?! Voor de duidelijkheid, in het bovenstaande geval hebben we 2 locaties, afhankelijk van de locatie moet er naar een database gewezen worden, het is dus niet zo dat de registry entries gewoon allemaal weggeschreven kunnen worden, want de 1 zou de ander overschrijven.

Misschien is het probleem dat de gebruikersnamen allemaal 8 cijferige nummers zijn? Kan d'r echt niet bij dat voor de ene gebruiker beide tests ok zijn en voor de andere niet (het waren wel 2 verschillende PC's...), met de user administrator zijn alle tests goed gegaan, ook als ik die aan die groepen toevoegde en verwijderde e.d.