none
Script para coletar informações do Usuário no AD RRS feed

  • Pergunta

  • Bom dia ..

    ja tentei e não consegui fazer o seguinte :

    No final do meu script é gerado um LOG com algumas informções do usuário eu gostaria de uma informação nesse log, que verificasse se o usuário que logou pertence a alguns grupos específicos dentro do AD, se sim, imprima no log qual grupo dentre os listados ele pertence exemplo:

     

    #grupos pré definidos

    teste e exmplo  ( quando o usuario logar o script verifica se o user pertence a um desses grupos, caso sim ele ponha no meu log o nome do grupo ou grupos que esse user está inserido). caso contrario escrava "não"

     

    Parte do script que se refere ao log:

    Function GeraLog(depto,divi)
    Dim fso, sf, StrNew
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\"& strComputer & "\root\cimv2")
    Set colAdapters = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    Set oNetwork = CreateObject("WScript.Network")
    Const ForAppending = 8
    Set fso = CreateObject("Scripting.FileSystemObject")
    systime = Now()
    StrNew= "\\srvfiles\logs$\" & depto & "\" & divi & ".txt"
    set sf=fso.OpenTextFile (StrNew, ForAppending, True)
    sf.writeline ""
    sf.writeline "=== Departamento de Informática ==="
    sf.writeline ""
    sf.writeline "Data: " & cstr(Date())
    sf.writeline "Hora: " & cstr(Time())
    sf.writeline ""
    sf.writeline "  Nome de Usuário          : " & oNetwork.UserName
    sf.writeline ""
    sf.writeline "=== Listando dispositivos de Rede ==="
    n = 1
    For Each objAdapter in colAdapters
    sf.writeline ""
       sf.writeline "  * Adaptador N.º " & n
       sf.writeline ""
       sf.writeline "  Descrição             : " & objAdapter.Description
       sf.writeline "  Endereço Físico (MAC) : " & objAdapter.MACAddress
       sf.writeline "  Nome de Host          : " & objAdapter.DNSHostName
       If Not IsNull(objAdapter.IPAddress) Then
          For i = 0 To UBound(objAdapter.IPAddress)
       sf.writeline "  Endereço IP           : " & objAdapter.IPAddress(i)
          Next
       End If
       If Not IsNull(objAdapter.IPSubnet) Then
          For i = 0 To UBound(objAdapter.IPSubnet)
       sf.writeline "  Mascara               : " & objAdapter.IPSubnet(i)
          Next
       End If
       If Not IsNull(objAdapter.DefaultIPGateway) Then
          For i = 0 To UBound(objAdapter.DefaultIPGateway)
       sf.writeline "  Gateway               : " & objAdapter.DefaultIPGateway(i)
          Next
       End If

       n = n + 1
    Next
    sf.writeline ""
    sf.writeline "=== FIM ==="
    sf.close
    End Function

     

    Se alguem poder ajudar ficarei muito Grato.

    quarta-feira, 21 de maio de 2008 14:32

Respostas

  • Fjunior o script para pegar os grupos que um usuário pertence é esse aqui:

    On Error Resume Next

    dim Pathusuarios()

    dim Usuario()
    i = 0
    s= 0
    Const ADS_SCOPE_SUBTREE = 2
    Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand =   CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    objCommand.CommandText = "<LDAP://DC=seudominio,dc=com,dc=br>;(&(objectCategory=user)(objectClass=user));ADsPath,name;subtree"
    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        redim preserve usuarios(i)

        redim preserve PathUsuarios(i)
        Pathusuarios(i) = objRecordSet.Fields("ADsPath")

        usuarios(i) = objRecordSet.Fields("name").value
        i = i +1
        objRecordSet.MoveNext
    Loop

     

    set FSO = createobject("scripting.filesystemobject")

    set arq = FSO.createtextFile("C:\usuarios.txt",8)

    for j =0 to i-1
     
    Set objUser = GetObject _
        (Pathusuarios(j))
    intPrimaryGroupID = objUser.Get("primaryGroupID")
    arrMemberOf = objUser.GetEx("memberOf")
        For Each Group in arrMemberOf

           If InStr(Group, "nome do grupo que quer verificar") then
              arq.writeline "O usuário " & usuarios(j) & " pertence ao grupo"
              s=1
              exit for
           end if
        Next
    if s = 0 then
         arq.writeline "O usuário " & usuarios(j) & " não pertence ao grupo"
    end if
    next

    ele salva o arquivo usuarios dentro do C: e mude o que está em negrito no script Wink

    quarta-feira, 21 de maio de 2008 17:07