Windows 2003, CurrentUser.MemberOf e Type Mismatch Error
Problema:
Ao executar o trecho de código abaixo, o WSH retorna um erro na linha 3:
#1: Set ADSysInfo = CreateObject("ADSystemInfo")
#2: Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
#3: strGroups = LCase(CurrentUser.MemberOf)
Causa:
O erro que geralmente ocorre é do tipo Type Mismatch. Isto acontece quando o retorno de .MemberOf é composto de mais de um item, ou seja, se o usuário pertencer a um grupo somente, o método retorna uma string, se não, ele retorna um Array do tipo Variant().
Solução:
A melhor forma de resolver este problema é testar se o retorno de .MemberOf é um Array, utilizando a função IsArray, como no exemplo abaixo:
If IsArray(CurrentUser.MemberOf) Then
Dim arrMemberOf
arrMemberOf = CurrentUser.MemberOf
For i = 0 To UBound(arrMemberOf)
strGroups = strGroups & ";" & LCase(arrMemberOf(i)) & ";"
Next
Else
strGroups = LCase(CurrentUser.MemberOf)
End If
0 Comments:
Postar um comentário
<< Home