none
Listar nome de conta dos usuarios do active directory RRS feed

  • Pergunta

  • Prezados bom dia , necessito de um script que me liste os nomes de login para cerca de 1600 users de que forma :

    possuo uma planilha com apenas o nome completo  ou seja : jose antonio pereira da silva e gostaria que este script me crie um arquivo de saida com o nome de de login deste usuario e filtre se a conta esta desativada ou inexistente, encontrei um script powershell que faz isso porém exige um formato trabalhoso para isso sera que é possivel mudar isso ? veja o script abaixo : 

    #requires -Version 2.0
    
    Import-Module ActiveDirectory
    Function Get-OSCSamAccountName
    {
    <#
      .SYNOPSIS
            Get-OSCSamAccountName is an advanced function which can be used to get active directory user SamAccount name.
        .DESCRIPTION
            Get-OSCSamAccountName is an advanced function which can be used to get active directory user SamAccount name.
        .PARAMETER  CsvFilePath
    Specifies the path you want to import csv files.
        .EXAMPLE
            C:\PS> Get-OSCSamAccountName -CsvFilePath C:\Users.csv
    
    This command will list all active directory user SamAccount Name info.
    #>
        [CmdletBinding()]
        Param
        (
            [Parameter(Mandatory=$true)]
            [String]$CsvFilePath
        )
    
        If($CsvFilePath)
        {
            If(Test-Path -Path $CsvFilePath)
            {
                #import the csv file and store in a variable
                $Names = (Import-Csv -Path $CsvFilePath).DisplayName
                
                Foreach($Name in $Names)
                {
                    $Name = $Name.Replace(" ","") -split ","
                    $FirstName = $Name[0].Trim()
                    $LastName = $Name[1].Trim()
                    $UserName = $FirstName + " " + $LastName
                    #Retrieve the ad users based on previous two variables.
                    $SamAccountName = Get-ADUser -Filter{ Surname -eq $LastName -and GivenName -eq $FirstName}|`
                    Select -ExpandProperty SamAccountName
                    
                    If($SamAccountName -eq $null)
                    {
                        $SamAccountName = "NotFound"
                    }
    
                    #Output the result
                    New-Object -TypeName PSObject -Property @{DisplayName = $UserName
                                                              SamAccountName = $SamAccountName
                                                             }
                        
                }
            }
            Else
            {
                Write-Warning "Cannot find path '$CsvFilePath' because it does not exist."
            }
        }
    }



    Grato a todos !


    José Aparecido Silva de Lima


    quinta-feira, 13 de março de 2014 10:33

Respostas

  • José Aparecido,

    Fiz um rapidinho mas pegando de um arquivo texto que tem o formato bem simples (basta você copiar uma coluna da sua planilha e colar no notepad)

    Nome
    Fábio de Paula Jr
    Jose aparecido

    O script lê o arquivo (c:\temp\usuarios.txt) no formato acima e depois cria um novo 

    #requires -version 2.0
    Import-Module ActiveDirectory
    
    $arquivoUsuarios = "c:\temp\usuarios.txt"
    
    #cabeçalho do arquivo de saída
    "Login;Habilitado" | Set-Content $arquivoUsuarios".saida.txt"
    
    $Usuarios = Get-Content $arquivoUsuarios | select -Skip 1
    
    foreach($nome in $Usuarios){
        
        #Localiza Usuário
        $usuario = get-aduser -Filter {Displayname -eq $nome}
        
        if ($Usuario -ne $null){
            $usuario.SamAccountName +";"+ $usuario.Enabled |
                add-Content $arquivoUsuarios".saida.txt"
            
        }else{
            #Não existe
            "$nome;Não Existe" |
                add-Content $arquivoUsuarios".saida.txt"
    
        }
    
    }

    Dá pra ler direto do Excel mas dá um pouco mais de trabalho

    Ref.:

    Using get-aduser to search for enabled users in entire domain filter

    http://social.technet.microsoft.com/Forums/windowsserver/en-US/03a28ac4-0028-4195-9a01-2c442d61575a/using-getaduser-to-search-for-enabled-users-in-entire-domain-filter-?forum=winserverpowershell


    Fábio de Paula Junior


    quinta-feira, 13 de março de 2014 18:09
    Moderador

Todas as Respostas

  • José Aparecido,

    Fiz um rapidinho mas pegando de um arquivo texto que tem o formato bem simples (basta você copiar uma coluna da sua planilha e colar no notepad)

    Nome
    Fábio de Paula Jr
    Jose aparecido

    O script lê o arquivo (c:\temp\usuarios.txt) no formato acima e depois cria um novo 

    #requires -version 2.0
    Import-Module ActiveDirectory
    
    $arquivoUsuarios = "c:\temp\usuarios.txt"
    
    #cabeçalho do arquivo de saída
    "Login;Habilitado" | Set-Content $arquivoUsuarios".saida.txt"
    
    $Usuarios = Get-Content $arquivoUsuarios | select -Skip 1
    
    foreach($nome in $Usuarios){
        
        #Localiza Usuário
        $usuario = get-aduser -Filter {Displayname -eq $nome}
        
        if ($Usuario -ne $null){
            $usuario.SamAccountName +";"+ $usuario.Enabled |
                add-Content $arquivoUsuarios".saida.txt"
            
        }else{
            #Não existe
            "$nome;Não Existe" |
                add-Content $arquivoUsuarios".saida.txt"
    
        }
    
    }

    Dá pra ler direto do Excel mas dá um pouco mais de trabalho

    Ref.:

    Using get-aduser to search for enabled users in entire domain filter

    http://social.technet.microsoft.com/Forums/windowsserver/en-US/03a28ac4-0028-4195-9a01-2c442d61575a/using-getaduser-to-search-for-enabled-users-in-entire-domain-filter-?forum=winserverpowershell


    Fábio de Paula Junior


    quinta-feira, 13 de março de 2014 18:09
    Moderador
  • Ola,

    No console de administração do Active Directory crie uma consulta salva solicitando todos os usuários e adiciona a coluna (nome de logon anterior) em (exibir\adicionar e remover colunas), exporte para .txt e depois copie para o Excel.


    Ricardo Ariati Felipe


    quinta-feira, 13 de março de 2014 19:54
  • José Aparecido,

    Resolvido?


    Fábio de Paula Junior

    segunda-feira, 17 de março de 2014 22:31
    Moderador