Usuário com melhor resposta
Administração de contas de usuário no AD pelo evento de segurança

Pergunta
-
Tenho um script que vai me ajudar a contabilizar a quantidade de usuários criados (ID 624), usuários excluídos (ID 630), usuários ativados (ID 626), usuários desativados (ID 629). Blz!!!
Mas preciso um pouco mais de informação.....preciso saber quais (os nomes) usuários sofrerão essas alterações.
Alguém sabe me informar se é gerado algum log no AD de criação, remoção, ativação e desativação de usuário indicando o nome do mesmo e se é possível fazer com que um VBS colete essas informações?
Obrigado e feliz ano novo a todos.
Respostas
-
Augusto,
Não sei como vc está lendo os eventos, normalmente eu utilizo a classe Win32_NTLogEvent do WMI, ela contém uma propriedade chamada "Message" que contém a descrição do evento, nela você (talvez com um pouco de trabalho) vc conseguiria as informações que vc quer.
Tem um exemplo que postei aqui no fórum de como fazer isto com os eventos de impressão, talvez te ajude com o seu.Se vc estiver com dificuldade copie um exemplo de evento e post aqui.
Script de Impressão:
http://forums.microsoft.com/technet-br/ShowPost.aspx?PostID=668171&SiteID=29- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:00
-
Augusto,
Você pode pegar o objEvent.User, retirar o dominio e pesquisar no AD para obter os dados dos usuários.
Exemplo:
'-------------------------------------------------------------
sUserName = QueryActiveDirectory( LoginUser )'-------------------------------------------------------------
Public Function QueryActiveDirectory(sUserConta)QueryActiveDirectory = "Not Found"
if Len(sUserConta) > 0 thenDim oAD
Dim oGlobalCatalog
Dim oRecordSet
Dim oConnection
Dim strADsPath
Dim strQuery
Dim strUPNset oRecordSet = CreateObject("ADODB.Recordset")
set oConnection = CreateObject("ADODB.Connection")Set oAD = GetObject("GC:")
For Each oGlobalCatalog In oAD
strADsPath = oGlobalCatalog.AdsPath
NextoConnection.Provider = "ADsDSOObject"
oConnection.Open "ADs Provider"
strQuery = "<" & strADsPath & _
">;(&(objectClass=user)(objectCategory=person)(sAMAccountName=" & _
sUserConta & "));userPrincipalName,cn,distinguishedName;subtree"Set oRecordSet = oConnection.Execute(strQuery)
If oRecordSet.EOF And oRecordSet.BOF Then
QueryActiveDirectory = "Not Found"
Else
While Not oRecordSet.EOF
QueryActiveDirectory = oRecordSet.Fields("distinguishedName")
oRecordSet.MoveNext
Wend
End IfEnd If
End Function
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:00
Todas as Respostas
-
Augusto,
Não sei como vc está lendo os eventos, normalmente eu utilizo a classe Win32_NTLogEvent do WMI, ela contém uma propriedade chamada "Message" que contém a descrição do evento, nela você (talvez com um pouco de trabalho) vc conseguiria as informações que vc quer.
Tem um exemplo que postei aqui no fórum de como fazer isto com os eventos de impressão, talvez te ajude com o seu.Se vc estiver com dificuldade copie um exemplo de evento e post aqui.
Script de Impressão:
http://forums.microsoft.com/technet-br/ShowPost.aspx?PostID=668171&SiteID=29- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:00
-
Augusto,
Você pode pegar o objEvent.User, retirar o dominio e pesquisar no AD para obter os dados dos usuários.
Exemplo:
'-------------------------------------------------------------
sUserName = QueryActiveDirectory( LoginUser )'-------------------------------------------------------------
Public Function QueryActiveDirectory(sUserConta)QueryActiveDirectory = "Not Found"
if Len(sUserConta) > 0 thenDim oAD
Dim oGlobalCatalog
Dim oRecordSet
Dim oConnection
Dim strADsPath
Dim strQuery
Dim strUPNset oRecordSet = CreateObject("ADODB.Recordset")
set oConnection = CreateObject("ADODB.Connection")Set oAD = GetObject("GC:")
For Each oGlobalCatalog In oAD
strADsPath = oGlobalCatalog.AdsPath
NextoConnection.Provider = "ADsDSOObject"
oConnection.Open "ADs Provider"
strQuery = "<" & strADsPath & _
">;(&(objectClass=user)(objectCategory=person)(sAMAccountName=" & _
sUserConta & "));userPrincipalName,cn,distinguishedName;subtree"Set oRecordSet = oConnection.Execute(strQuery)
If oRecordSet.EOF And oRecordSet.BOF Then
QueryActiveDirectory = "Not Found"
Else
While Not oRecordSet.EOF
QueryActiveDirectory = oRecordSet.Fields("distinguishedName")
oRecordSet.MoveNext
Wend
End IfEnd If
End Function
- Marcado como Resposta Wagner dos Santos VasconcellosModerator segunda-feira, 4 de junho de 2012 12:00