NoName2k5 10 Geschrieben 24. August 2007 Melden Teilen Geschrieben 24. August 2007 Hallo zusammen , habe ich die M öglicheit mit WSH herauszufinden ob der User Mitgleid der Gruppe Xy ist? Konkret handelt es sich bei dem Vorhaben um ein Loginscript welches den Usern die Drucker anhand der Gruppenzugehörigkeit zuweisen soll. Mit Batch war das ganze mit IFMEMBER zu erledigen. Wie kann ich das mit WSH bewerkstelligen. Danke im vorraus Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 24. August 2007 Melden Teilen Geschrieben 24. August 2007 Evtl. hilft Dir das hier weiter: List the Active Directory Groups a User Belongs To List the Active Directory Groups a User Belongs To Zitieren Link zu diesem Kommentar
Demon72 10 Geschrieben 24. August 2007 Melden Teilen Geschrieben 24. August 2007 Dim strUser Dim strGroup Dim bolMemberOfGroup Dim objShell, objFSO, objADOConection, objADOCommand, objRecordSet, wshNetwork, regEx, DL, x Set objShell = Wscript.CreateObject ("Wscript.Shell") Set WshNetwork = WScript.CreateObject("WScript.Network") strPacFile = objShell.ExpandEnvironmentStrings("%TEMP%") & "\ext_auto.pac" strUser = WshNetwork.UserName Set objADOConection = CreateObject("ADODB.Connection") objADOConection.Provider = "ADsDSOObject" objADOConection.Open "Active Directory Provider" Set objADOCommand = CreateObject("ADODB.Command") Set objADOCommand.ActiveConnection = objADOConection objADOCommand.CommandText = "<LDAP://DC=MICROSOFT,DC=COM>;(&(objectClass=user)(sAMAccountName=" & strUser & "));memberOf;subtree" Set objRecordSet = objADOCommand.Execute strGroup = "TESTGROUP" Set regEx = New RegExp regEx.Pattern = strGroup regEx.IgnoreCase = TRUE If objRecordSet.fields.count = 1 Then DL = objRecordSet.Fields(0).Value For Each x In DL bolMemberOfGroup = regEx.Test(x) If bolMemberOfGroup Then Exit For End If Next If bolMemberOfGroup Then .... End If End If Set objRecordSet = Nothing Set objADOCommand = Nothing Set objADOConection = Nothing Set regEx = Nothing Set WshNetwork = Nothing Set objShell = Nothing Zitieren Link zu diesem Kommentar
NoName2k5 10 Geschrieben 28. August 2007 Autor Melden Teilen Geschrieben 28. August 2007 Hi , danke erstmal für die antworten. Beiden war leider nicht das was ich gesucht habe. Trotzdem danke. Ich bin durch zufall auf das hier gestoßen : Option Explicit ' Force explicit declarations ' ' Variables ' Dim WSHNetwork Dim FSO Dim strUserName ' Current user Dim strUserDomain ' Current User's domain name Dim ObjGroupDict ' Dictionary of groups to which the user belongs Set WSHNetwork = WScript.CreateObject("WScript.Network") Set FSO = CreateObject("Scripting.FileSystemObject") ' ' Wait until the user is really logged in... ' strUserName = "" While strUserName = "" WScript.Sleep 100 ' 1/10 th of a second strUserName = WSHNetwork.UserName Wend strUserDomain = WSHNetwork.UserDomain ' Read the user's account "Member Of" tab info across the network ' once into a dictionary object. Set ObjGroupDict = CreateMemberOfObject(strUserDomain, strUserName) If MemberOf(ObjGroupDict, "Domain Admins") Then wscript.echo "Is a member of Domain Admins." 'REM this line to Map Network Drives 'Map network Drives here, UNREM the below lines: 'WSHNetwork.MapNetworkDrive "O:", "\\server1\share" 'WSHNetwork.MapNetworkDrive "Q:", "\\server2\share" Else wscript.echo "Is NOT a member of Domain Admins" End If Function MemberOf(ObjDict, strKey) ' Given a Dictionary object containing groups to which the user ' is a member of and a group name, then returns True if the group ' is in the Dictionary else return False. ' ' Inputs: ' strDict - Input, Name of a Dictionary object ' strKey - Input, Value being searched for in ' the Dictionary object ' Sample Usage: ' ' If MemberOf(ObjGroupDict, "DOMAIN ADMINS") Then ' wscript.echo "Is a member of Domain Admins." ' End If ' ' MemberOf = CBool(ObjGroupDict.Exists(strKey)) End Function Function CreateMemberOfObject(strDomain, strUserName) ' Given a domain name and username, returns a Dictionary ' object of groups to which the user is a member of. ' ' Inputs: ' ' strDomain - Input, NT Domain name ' strUserName - Input, NT username ' 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 Quelle : Check Group Membership and Map Drives in a Logon Script Dieses Script ist genau das was ich gebraucht habe. mfg NN2k5 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.