:D so wie versprochen...
so wie es jetzt aufgebaut hab ich es benutzt um zu prüfen (beim Logon an TS )ob in der lokalen Gruppe der Administratoren sich der angemeldete Benutzer befindet. Das Problem war aber wir hatten hier auch Globale Gruppen aus der Domäne drin.
Ist er drin kommt jetzt ne Msgbox mit seinem Usernamen.
Das ganze könnte man natürlich umbauen um festzustellen wo ein User überall drin ist, damit meine ich die Technik mit der Rekursion.
Also viel Spass beim Probieren.
++++++++++++++++++++++++++++++++++++++++++++++
'Info: Option Explicit fehlt ebenso würde ich noch alle Objekt am schluss leeren mit Nothing
'Scriptbeginn
DIM ComputerName,wshNW
SET wshNw = WScript.CreateObject("Wscript.network")
ComputerName = wshNW.ComputerName
UserString = wshNW.UserName
'UserString = ""
GroupString = "Administrators"
Call Rekurs(ComputerName,GroupString) Start der Suche
WScript.Quit
'Scriptende
'************************************************************************************************
Function Rekurs(Computername,GroupString)
SET grp = GetObject("WinNT://" & ComputerName & "/" & GroupString)
SET Memberlist = grp.members
FOR EACH m In Memberlist
SET UserAccount = m
'MSGBOX UserAccount.name
IF UserString = UserAccount.Name THEN
MSGBOX UserAccount.Name 'Angemeldeter User wird angezeigt wenn er in angegebener Gruppe (auch Gruppen in dieser Gruppe und so weiter) ist,
WScript.Quit
ELSE
Name=UserAccount.Name
call ObjektProp(Name)
END IF
NEXT
END Function
'************************************************************************************************
SUB ObjektProp(Name)
DIM prop,UAcc
UAcc = Name
On Error Resume Next
SET prop = GetObject("WinNT://" & ComputerName & "/" & UAcc)
'MSGBOX "Object Class: " & x.Class
IF prop.Class = "Group" THEN Call Rekurs("EU",UAcc) 'und hier der Clou: Die Rekusion wenn er in der Gruppre eine Gruppe findet na dann eben von vorne..
END Sub
++++++++++++++++++++++++++++++++++++++++++++
Gruß
Grenzer