ACTIVE DIRECTORY USUARIOS
Pessoal já quebrei a cabeça aqui e não encontrei nada do genero...
Alguém poderia dar uma luz, estou precisando pegar os usuários bloqueados e inativados do active directory alguém tem algo semelhante ?
Alguém poderia dar uma luz, estou precisando pegar os usuários bloqueados e inativados do active directory alguém tem algo semelhante ?
Então eu já dei uma lida e sei fazer a conexão mas não sei aonde estou errando:
Dim RootDSE As New DirectoryServices.DirectoryEntry([Ô]LDAP://RootDSE[Ô])
Dim DomainDN As String = RootDSE.Properties([Ô]DefaultNamingContext[Ô]).Value
Dim ADEntry As New DirectoryServices.DirectoryEntry([Ô]LDAP://[Ô] & DomainDN)
Dim ADSearch As New System.DirectoryServices.DirectorySearcher(ADEntry)
Dim ADSearchResult As System.DirectoryServices.SearchResult
ADSearch.Filter = ([Ô](samAccountName=[Ô] & [Ô]INTERNET[Ô] & [Ô])[Ô])
ADSearch.SearchScope = System.DirectoryServices.SearchScope.Subtree
Dim UserFound As System.DirectoryServices.SearchResult = ADSearch.FindOne()
If Not IsNothing(UserFound) Then
Dim Attrib As String = [Ô]msDS-User-Account-Control-Computed[Ô]
Dim User As System.DirectoryServices.DirectoryEntry
User = UserFound.GetDirectoryEntry()
User.RefreshCache(New String() {Attrib})
Const UF_LOCKOUT As Integer = &H10
Const UF_DISABLE As Integer = &H2
Dim Flags As Integer = CInt(Fix(User.Properties(Attrib).Value))
If Convert.ToBoolean(Flags And UF_LOCKOUT) Then
Console.WriteLine([Ô]Account is locked out[Ô])
[ô]Unlock account
User.Properties([Ô]LockOutTime[Ô]).Value = 0
User.CommitChanges()
Console.WriteLine([Ô]Account is now unlocked[Ô])
Else
If Convert.ToBoolean(Flags And UF_DISABLE) Then
MsgBox([Ô]disable[Ô])
End If
Console.WriteLine([Ô]Account is not locked out[Ô])
End If
End If
Dim RootDSE As New DirectoryServices.DirectoryEntry([Ô]LDAP://RootDSE[Ô])
Dim DomainDN As String = RootDSE.Properties([Ô]DefaultNamingContext[Ô]).Value
Dim ADEntry As New DirectoryServices.DirectoryEntry([Ô]LDAP://[Ô] & DomainDN)
Dim ADSearch As New System.DirectoryServices.DirectorySearcher(ADEntry)
Dim ADSearchResult As System.DirectoryServices.SearchResult
ADSearch.Filter = ([Ô](samAccountName=[Ô] & [Ô]INTERNET[Ô] & [Ô])[Ô])
ADSearch.SearchScope = System.DirectoryServices.SearchScope.Subtree
Dim UserFound As System.DirectoryServices.SearchResult = ADSearch.FindOne()
If Not IsNothing(UserFound) Then
Dim Attrib As String = [Ô]msDS-User-Account-Control-Computed[Ô]
Dim User As System.DirectoryServices.DirectoryEntry
User = UserFound.GetDirectoryEntry()
User.RefreshCache(New String() {Attrib})
Const UF_LOCKOUT As Integer = &H10
Const UF_DISABLE As Integer = &H2
Dim Flags As Integer = CInt(Fix(User.Properties(Attrib).Value))
If Convert.ToBoolean(Flags And UF_LOCKOUT) Then
Console.WriteLine([Ô]Account is locked out[Ô])
[ô]Unlock account
User.Properties([Ô]LockOutTime[Ô]).Value = 0
User.CommitChanges()
Console.WriteLine([Ô]Account is now unlocked[Ô])
Else
If Convert.ToBoolean(Flags And UF_DISABLE) Then
MsgBox([Ô]disable[Ô])
End If
Console.WriteLine([Ô]Account is not locked out[Ô])
End If
End If
Bom, apresenta alguma mensagem de erro? Se apresenta, onde exatamente está o erro? Qual erro?
Esse é o problema ele não apresenta erro mas o estranho é que o valor do campo [Ô]flag[Ô] sempre está como branco, por isso não está funcionando.
Pare a execução na linha:
Dim Flags As Integer = CInt(Fix(User.Properties(Attrib).Value))
Adicione [Ô]User.Properties[Ô] na watch window e veja as propriedades uma à uma. Dependendo da versão do AD elas têm nomes diferentes...
Dim Flags As Integer = CInt(Fix(User.Properties(Attrib).Value))
Adicione [Ô]User.Properties[Ô] na watch window e veja as propriedades uma à uma. Dependendo da versão do AD elas têm nomes diferentes...
Achei esse código aqui e está funcionando 100%, porém gostaria de achar uma tabela/lista com todos os parametros do (userEntry.NativeObject.accountdisabled)
Dim strUser As String, intValue As Integer
Dim objLockout As Object = user.GetDirectoryEntry.Properties([Ô]lockoutTime[Ô]).Value
Dim result As SearchResult
Dim userEntry As DirectoryEntry
strUser = UCase(user.GetDirectoryEntry.Properties([Ô]sAMAccountName[Ô]).Value.ToString)
intValue = CType(user.GetDirectoryEntry.Properties([Ô]userAccountControl[Ô]).Value, Integer)
[ô]If GetLargeIntegerValue(objLockout) <> Nothing Then
[ô]intLargeInteger = GetLargeIntegerValue(objLockout)
[ô]End If
srch.Filter = [Ô](SAMAccountName=[Ô] + strUser + [Ô])[Ô]
srch.CacheResults = False
result = srch.FindOne
userEntry = result.GetDirectoryEntry
With userEntry
If userEntry.NativeObject.accountdisabled = True Then
fndDadosUsuarios(strUser, [Ô]BLOQUEADO[Ô])
intTotalContasBloqueadas += 1
End If
End With
Dim strUser As String, intValue As Integer
Dim objLockout As Object = user.GetDirectoryEntry.Properties([Ô]lockoutTime[Ô]).Value
Dim result As SearchResult
Dim userEntry As DirectoryEntry
strUser = UCase(user.GetDirectoryEntry.Properties([Ô]sAMAccountName[Ô]).Value.ToString)
intValue = CType(user.GetDirectoryEntry.Properties([Ô]userAccountControl[Ô]).Value, Integer)
[ô]If GetLargeIntegerValue(objLockout) <> Nothing Then
[ô]intLargeInteger = GetLargeIntegerValue(objLockout)
[ô]End If
srch.Filter = [Ô](SAMAccountName=[Ô] + strUser + [Ô])[Ô]
srch.CacheResults = False
result = srch.FindOne
userEntry = result.GetDirectoryEntry
With userEntry
If userEntry.NativeObject.accountdisabled = True Then
fndDadosUsuarios(strUser, [Ô]BLOQUEADO[Ô])
intTotalContasBloqueadas += 1
End If
End With
Resolvido !
(userEntry.NativeObject.IsAccountLocked)
(userEntry.NativeObject.IsAccountLocked)
Tópico encerrado , respostas não são mais permitidas