none
Recuperar informações da conta do usuário RRS feed

  • Pergunta

  • Bom dia,

    To precisando de um script que retorne para mim as seguintes informação : nome da conta do usuario, data de criação da conta, data de logon dela.

    Att,

    Benedito Jr


    Benedito Jr
    sexta-feira, 21 de outubro de 2011 13:30

Respostas

  • Não testei este script, ainda estou desenvolvendo, por favor me avisem sobre valores errados que vcs possam a vir encontrar.

    Script em PowerShell(.ps1), vocês precisam apenas alterar o caminha de saida (primeira linha)

     

    $ArquivoSaida = "C:\temp\usuarios.txt"
    
    $strFilter = "(&(objectCategory=person)(objectClass=user))"
    
    #Cria Hash Vazio
    $hash = @{}
    
    
    ######################
    # Recupera o nome de cada DC
    $StrDCs = [System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain() | foreach{$_.DomainControllers| foreach{$_.Name}}
    
    $StrDCs | foreach-object {
        
        $StrEachDC = "LDAP://"+$_.split(".")[0]
    
        $objDomain = New-Object System.DirectoryServices.DirectoryEntry $StrEachDC
    
        $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
        $objSearcher.SearchRoot = $objDomain
        $objSearcher.PageSize = 1000
        $objSearcher.Filter = $strFilter
        $objSearcher.SearchScope = "Subtree"
    
        $colProplist = "name","sAMAccountName","lastlogon","whenCreated"
        foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
    
        $colResults = $objSearcher.FindAll()
    
        foreach ($objResult in $colResults){
            $Usuario  = $objResult.Properties;
            $dtLogon  = $lastlogon =[DateTime]::FromFileTime([Int64]::Parse($Usuario.lastlogon))
            $dtCreated= $Usuario.whencreated[0]
            $usr=$Usuario.samaccountname[0]
            
            #Monta Array
            $arrTmp = ($Usuario.name[0],$dtCreated,$dtLogon)
            
            if (-not $Hash.ContainsKey($usr)) {
                $hash.Add($usr, $arrTmp)
            }
            else {
                if ($dt -gt $hash[$usr]){$hash[$usr] = $arrTmp}
            }
    
        }
    }
    
    #Escreve em arquivo
    "Conta;Nome;Data Criação;Último Logon" | out-file -filepath $ArquivoSaida 
    
    foreach ($key in $hash.keys){
        $Linha = $key+";"+$hash.item($key)[0]+";"+$hash.item($key)[1]+";"+$hash.item($key)[2]
        $Linha | out-file -filepath $ArquivoSaida  -append
    }
    
    
    
    
    


    Fábio de Paula Junior
    terça-feira, 25 de outubro de 2011 11:59
    Moderador

Todas as Respostas

  • Pessoal bom dia,
     
    Preciso gerar um lista de preferencia .xls do AD 2003 com os seguintes ítens:

    Login, nome, data de criação login, data do último logon.
     
    Alguém com um script para me ajudar?
     
    Abraço.

     

    domingo, 23 de outubro de 2011 10:47
  • Não testei este script, ainda estou desenvolvendo, por favor me avisem sobre valores errados que vcs possam a vir encontrar.

    Script em PowerShell(.ps1), vocês precisam apenas alterar o caminha de saida (primeira linha)

     

    $ArquivoSaida = "C:\temp\usuarios.txt"
    
    $strFilter = "(&(objectCategory=person)(objectClass=user))"
    
    #Cria Hash Vazio
    $hash = @{}
    
    
    ######################
    # Recupera o nome de cada DC
    $StrDCs = [System.DirectoryServices.ActiveDirectory.Domain]::getcurrentdomain() | foreach{$_.DomainControllers| foreach{$_.Name}}
    
    $StrDCs | foreach-object {
        
        $StrEachDC = "LDAP://"+$_.split(".")[0]
    
        $objDomain = New-Object System.DirectoryServices.DirectoryEntry $StrEachDC
    
        $objSearcher = New-Object System.DirectoryServices.DirectorySearcher
        $objSearcher.SearchRoot = $objDomain
        $objSearcher.PageSize = 1000
        $objSearcher.Filter = $strFilter
        $objSearcher.SearchScope = "Subtree"
    
        $colProplist = "name","sAMAccountName","lastlogon","whenCreated"
        foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
    
        $colResults = $objSearcher.FindAll()
    
        foreach ($objResult in $colResults){
            $Usuario  = $objResult.Properties;
            $dtLogon  = $lastlogon =[DateTime]::FromFileTime([Int64]::Parse($Usuario.lastlogon))
            $dtCreated= $Usuario.whencreated[0]
            $usr=$Usuario.samaccountname[0]
            
            #Monta Array
            $arrTmp = ($Usuario.name[0],$dtCreated,$dtLogon)
            
            if (-not $Hash.ContainsKey($usr)) {
                $hash.Add($usr, $arrTmp)
            }
            else {
                if ($dt -gt $hash[$usr]){$hash[$usr] = $arrTmp}
            }
    
        }
    }
    
    #Escreve em arquivo
    "Conta;Nome;Data Criação;Último Logon" | out-file -filepath $ArquivoSaida 
    
    foreach ($key in $hash.keys){
        $Linha = $key+";"+$hash.item($key)[0]+";"+$hash.item($key)[1]+";"+$hash.item($key)[2]
        $Linha | out-file -filepath $ArquivoSaida  -append
    }
    
    
    
    
    


    Fábio de Paula Junior
    terça-feira, 25 de outubro de 2011 11:59
    Moderador
  • Bom dia Fabio Jr.

    Recebi o retorno do comando:

     

    Windows PowerShell
    Copyright (C) 2009 Microsoft Corporation. All rights reserved.

    PS C:\Documents and Settings\user\ coleta.ps1
    The term 'coleta.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
    spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:11
    + coleta.ps1 <<<<
        + CategoryInfo          : ObjectNotFound: (coleta.ps1:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException

    PS C:\Documents and Settings\user> cd desktop
    PS C:\Documents and Settings\user\desktop> coleta.ps1
    The term 'coleta.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
    spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:11
    + coleta.ps1 <<<<
        + CategoryInfo          : ObjectNotFound: (coleta.ps1:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException


    Suggestion [3,General]: The command coleta.ps1 was not found, but does exist in the current location. Windows PowerShell
     doesn't load commands from the current location by default. If you trust this command, instead type ".\coleta.ps1". See
     "get-help about_Command_Precedence" for more details.

    quarta-feira, 26 de outubro de 2011 11:51
  • Para executar script Powershell é um pouco diferente.

    De dentro do prompt do power shell ao invés de :

    PS C:\Documents and Settings\user\desktop> coleta.ps1

    adicione .\:

    PS C:\Documents and Settings\user\desktop> .\coleta.ps1

     

    Parecido com Linux.


    Fábio de Paula Junior
    quarta-feira, 26 de outubro de 2011 12:24
    Moderador
  • Running Windows PowerShell Scripts

    http://technet.microsoft.com/en-us/library/ee176949.aspx


    Fábio de Paula Junior
    quarta-feira, 26 de outubro de 2011 12:28
    Moderador
  • Boa tarde Fábio,

    Desculpe, imaginei que fosse .ps1, ele estava em vbs mesmo?

    Agradeço o apoio, preciso com certa urgência.

    quinta-feira, 27 de outubro de 2011 17:11
  • O script é em PowerShell (.PS1)

    Quando você executou faltou colocar um .\ antes do nome do script


    Fábio de Paula Junior
    quinta-feira, 27 de outubro de 2011 17:15
    Moderador
  • Fábio,

    Tem como me mandar em  .vbs?

    Agradeço.

     

     

    quinta-feira, 27 de outubro de 2011 18:19
  • Rogerio,

    Eu teria que migrar o script. Estou meio sem tempo.

    Tentou rodar no PowerShell?


    Fábio de Paula Junior
    quinta-feira, 27 de outubro de 2011 18:21
    Moderador
  • Boa noite Fabio,

    Tentei mas no meu server restingiu, mesmo assim tenho em mãos dados necessários.

     

    BENEDITO, conseguiu algo?

     

    quinta-feira, 27 de outubro de 2011 23:27
  • O server restringiu? Sem o erro exato fica dificil mas suponho que seja a politica de execução de script.

     

    Abra um prompt do powershell como administrador e execute o comando: Set-ExecutionPolicy Unrestricted

    Ref.: http://technet.microsoft.com/en-us/library/ee176961.aspx


    Fábio de Paula Junior
    sexta-feira, 28 de outubro de 2011 12:56
    Moderador
  • Obrigado Fábio.

     

     

    segunda-feira, 14 de novembro de 2011 12:17