BakerSyd
asked on
vbs isMember script - Active directory check
hi
i am looking for a vbs script that will check if a user belongs in a particular active directory group.
i have tried using the isMember function but it just keeps failing, im not sure what im doing wrong... does anybody have a simple isMember example i can use?
it needs to be as simple as
i have tried using the logic from here
http://ss64.com/vb/syntax-ismember.html
but i cant get it to work.. not sure whats going on and my vbs knowledge is limited
any ideas?
cheers!
i am looking for a vbs script that will check if a user belongs in a particular active directory group.
i have tried using the isMember function but it just keeps failing, im not sure what im doing wrong... does anybody have a simple isMember example i can use?
it needs to be as simple as
IF isMember ("groupName") then
do this
Else
do this
End IF
i have tried using the logic from here
http://ss64.com/vb/syntax-ismember.html
but i cant get it to work.. not sure whats going on and my vbs knowledge is limited
any ideas?
cheers!
ASKER
hey... thanks for replying...
i ran the following code
and i got a type mismatch at isMember
i ran the following code
Function IsMeAMember(ByVal strGroupNTName)
' Function to test for group membership.
' strGroupNTName is the NT name (sAMAccountName) of the group to test.
' Returns True if the current user is a member of the group.
'Create an Active Directory object
Set objADSystemInfo = CreateObject("ADSystemInfo")
'Create an object for the current user
Set objADUser = GetObject("LDAP://" & objADSystemInfo.UserName)
IsMeAMember = IsMember(objADUser, strGroupNTName)
End Function
IF isMeAMember ("GROUPNAME") then
wscript.echo "i am a member"
Else
wscript.echo "i am here"
End IF
and i got a type mismatch at isMember
Have you put the code for IsMember function from the link you have provided? To re-iterate, you need to also include this function:
Function IsMember(ByVal objADObject, ByVal strGroupNTName)
' Function to test for group membership.
' objADObject is a user or computer object.
' strGroupNTName is the NT name (sAMAccountName) of the group to test.
' objGroupList is a dictionary object, with global scope.
' Returns True if the user or computer is a member of the group.
' Subroutine LoadGroups is called once for each different objADObject.
Dim objRootDSE, strDNSDomain
' The first time IsMember is called, setup the dictionary object
' and objects required for ADO.
If (IsEmpty(objGroupList) = True) Then
Set objGroupList = CreateObject("Scripting.Dictionary")
objGroupList.CompareMode = vbTextCompare
Set adoCommand = CreateObject("ADODB.Command")
Set adoConnection = CreateObject("ADODB.Connection")
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
adoCommand.ActiveConnection = adoConnection
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
adoCommand.Properties("Page Size") = 100
adoCommand.Properties("Timeout") = 30
adoCommand.Properties("Cache Results") = False
' Search entire domain.
strBase = "<LDAP://" & strDNSDomain & ">"
' Retrieve NT name of each group.
strAttributes = "sAMAccountName"
' Load group memberships for this user or computer into dictionary
' object.
Call LoadGroups(objADObject)
Set objRootDSE = Nothing
End If
If (objGroupList.Exists(objADObject.sAMAccountName & "\") = False) Then
' Dictionary object established, but group memberships for this
' user or computer must be added.
Call LoadGroups(objADObject)
End If
' Return True if this user or computer is a member of the group.
IsMember = objGroupList.Exists(objADObject.sAMAccountName & "\" _
& strGroupNTName)
End Function
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
closing as this is a old issue which has now been resolved.
do not remember if we ended up using this code.
do not remember if we ended up using this code.
Also, according to the article the usage of this function is as follows:
Open in new window
Basically, you need to initialise objADUser variable for the current user (which the first two lines do). If you really want to call the function with one argument then create a new function, like this:Open in new window
Then the usage will be as simple as yours:Open in new window
Remember, you must still include the code for IsMember and IsMeAMember in your vbs file (they can be put in your file at the en, after your main function)