none
Administração de contas de usuário no AD pelo evento de segurança RRS feed

  • 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.

     

     

     

    quarta-feira, 27 de dezembro de 2006 12:56

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

    quarta-feira, 27 de dezembro de 2006 13:36
    Moderador
  • 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 then

        Dim oAD
        Dim oGlobalCatalog
        Dim oRecordSet
        Dim oConnection
        Dim strADsPath
        Dim strQuery
        Dim strUPN

        set oRecordSet = CreateObject("ADODB.Recordset")
        set oConnection = CreateObject("ADODB.Connection")

        Set oAD = GetObject("GC:")
        For Each oGlobalCatalog In oAD
            strADsPath = oGlobalCatalog.AdsPath
        Next

        oConnection.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 If

    End If

    End Function

    quinta-feira, 28 de dezembro de 2006 14:32

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

    quarta-feira, 27 de dezembro de 2006 13:36
    Moderador
  • 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 then

        Dim oAD
        Dim oGlobalCatalog
        Dim oRecordSet
        Dim oConnection
        Dim strADsPath
        Dim strQuery
        Dim strUPN

        set oRecordSet = CreateObject("ADODB.Recordset")
        set oConnection = CreateObject("ADODB.Connection")

        Set oAD = GetObject("GC:")
        For Each oGlobalCatalog In oAD
            strADsPath = oGlobalCatalog.AdsPath
        Next

        oConnection.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 If

    End If

    End Function

    quinta-feira, 28 de dezembro de 2006 14:32