Search code examples
powershellactive-directorypowergui

How to export all AD user accounts in a specified OU


I'm attempting to export all AD users within an OU to a csv file. However, I do not know how to fill in the first two given variables in a sample script I had pulled from a website.

Given that my LDAP connection string is LDAP://OU=Admin Accounts, OU=Test Accounts,dc=sample,dc=domain,dc=com, how would I fill out the variables for $path, and $pathexist?

Below is the sample script:

PROCESS #This is where the script executes 
{ 
$path = Split-Path -parent "$CSVReportPath\*.*" 
$pathexist = Test-Path -Path $path 
If ($pathexist -eq $false) 
{New-Item -type directory -Path $path} 

$reportdate = Get-Date -Format ssddmmyyyy 

$csvreportfile = $path + "\ALLADUsers_$reportdate.csv" 

#import the ActiveDirectory Module 
Import-Module ActiveDirectory 

#Perform AD search. The quotes "" used in $SearchLoc is essential 
#Without it, Export-ADUsers returuned error 
              Get-ADUser -server $ADServer -searchbase "$SearchLoc" -Properties * -Filter * |  
              Select-Object @{Label = "First Name";Expression = {$_.GivenName}},  
              @{Label = "Last Name";Expression = {$_.Surname}}, 
              @{Label = "Display Name";Expression = {$_.DisplayName}}, 
              @{Label = "Logon Name";Expression = {$_.sAMAccountName}}, 
              @{Label = "Full address";Expression = {$_.StreetAddress}}, 
              @{Label = "City";Expression = {$_.City}}, 
              @{Label = "State";Expression = {$_.st}}, 
              @{Label = "Post Code";Expression = {$_.PostalCode}}, 
              @{Label = "Country/Region";Expression = {if (($_.Country -eq 'GB')  ) {'United Kingdom'} Else {''}}}, 
              @{Label = "Job Title";Expression = {$_.Title}}, 
              @{Label = "Company";Expression = {$_.Company}}, 
              @{Label = "Description";Expression = {$_.Description}}, 
              @{Label = "Department";Expression = {$_.Department}}, 
              @{Label = "Office";Expression = {$_.OfficeName}}, 
              @{Label = "Phone";Expression = {$_.telephoneNumber}}, 
              @{Label = "Email";Expression = {$_.Mail}}, 
              @{Label = "Manager";Expression = {%{(Get-AdUser $_.Manager -server $ADServer -Properties DisplayName).DisplayName}}}, 
              @{Label = "Account Status";Expression = {if (($_.Enabled -eq 'TRUE')  ) {'Enabled'} Else {'Disabled'}}}, # the 'if statement# replaces $_.Enabled 
              @{Label = "Last LogOn Date";Expression = {$_.lastlogondate}} |  

              #Export CSV report 
              Export-Csv -Path $csvreportfile -NoTypeInformation     
}

Solution

  • That sample seems a little extreme. This should work:

    $csvreportfile = "C:\Temp\Output.csv"
    $ADServer = "DC1.domain.com"
    Get-ADUser -server $ADServer -searchbase "OU=Admin Accounts, OU=Test Accounts,dc=sample,dc=domain,dc=com" -Properties * -Filter * |  
    Select-Object @{Label = "First Name";Expression = {$_.GivenName}},  
    @{Label = "Last Name";Expression = {$_.Surname}}, 
    @{Label = "Display Name";Expression = {$_.DisplayName}}, 
    @{Label = "Logon Name";Expression = {$_.sAMAccountName}}, 
    @{Label = "Full address";Expression = {$_.StreetAddress}}, 
    @{Label = "City";Expression = {$_.City}}, 
    @{Label = "State";Expression = {$_.st}}, 
    @{Label = "Post Code";Expression = {$_.PostalCode}}, 
    @{Label = "Country/Region";Expression = {if (($_.Country -eq 'GB')  ) {'United Kingdom'} Else {''}}}, 
    @{Label = "Job Title";Expression = {$_.Title}}, 
    @{Label = "Company";Expression = {$_.Company}}, 
    @{Label = "Description";Expression = {$_.Description}}, 
    @{Label = "Department";Expression = {$_.Department}}, 
    @{Label = "Office";Expression = {$_.OfficeName}}, 
    @{Label = "Phone";Expression = {$_.telephoneNumber}}, 
    @{Label = "Email";Expression = {$_.Mail}}, 
    @{Label = "Manager";Expression = {%{(Get-AdUser $_.Manager -server $ADServer -Properties DisplayName).DisplayName}}}, 
    @{Label = "Account Status";Expression = {if (($_.Enabled -eq 'TRUE')  ) {'Enabled'} Else {'Disabled'}}}, # the 'if statement# replaces $_.Enabled 
    @{Label = "Last LogOn Date";Expression = {$_.lastlogondate}} |  
    
    #Export CSV report 
    Export-Csv -Path $csvreportfile -NoTypeInformation  
    

    To explain the $Path and $Pathexist variables, it is just checking to see if the path for the CSV export exists. If it doesn't exist, it creates it. You would need to declare $CSVReportPath as a variable as in:

    $CSVReportPath = "C:\Temp"