Export Active Directory User Information to CSV Using PowerShell

Export Active Directory User Information to CSV Using PowerShell
Export Active Directory User Information to CSV Using PowerShell

Estimated reading time: 3 minutes

Introduction

For administrators working with Active Directory, exporting user information to a CSV file can be a powerful way to gather and analyze data.

Using PowerShell, you can perform an LDAP search to retrieve details such as usernames, email addresses, last logon times, and more.

Here’s a PowerShell script that defines a search filter, specifies the attributes to retrieve, and outputs the data to a CSV file.

PowerShell Script to Export AD User Information

Below is the PowerShell script to perform an LDAP search on Active Directory and export the results to a CSV file. Copy and paste this code into PowerShell to run the script.

# Define LDAP filter to specify the criteria for the search
$filter = "*"

# Define the properties (attributes) to retrieve
$properties = "CanonicalName", "Description", "DisplayName", "lastlogontimestamp", "mail", "manager", "pwdlastset", "samaccountname", "useraccountcontrol", "userprincipalname", "whencreated"

# Specify the LDAP search scope (such as "Subtree" to search the entire directory)
$scope = "Subtree"

# Specify the base distinguished name (DN) where the search will start
$baseDN = "DC=contoso,DC=com"

# Perform the LDAP query
$results = Get-ADUser -Filter $filter -Properties $properties -SearchScope $scope -SearchBase $baseDN

# Output the results to CSV file with converted timestamps
$outputPath = "C:\CSV\ADInfo.csv"
$results | Select-Object @{Name='CanonicalName';Expression={$_.CanonicalName}},
                         @{Name='Description';Expression={$_.Description}},
                         @{Name='DisplayName';Expression={$_.DisplayName}},
                         @{Name='lastlogontimestamp';Expression={[datetime]::FromFileTime($_.lastlogontimestamp)}},
                         @{Name='mail';Expression={$_.mail}},
                         @{Name='manager';Expression={$_.manager}},
                         @{Name='pwdlastset';Expression={[datetime]::FromFileTime($_.pwdlastset)}},
                         @{Name='samaccountname';Expression={$_.samaccountname}},
                         @{Name='useraccountcontrol';Expression={$_.useraccountcontrol}},
                         @{Name='userprincipalname';Expression={$_.userprincipalname}},
                         @{Name='whencreated';Expression={$_.whencreated}} |
Export-Csv -Path $outputPath -NoTypeInformation

Write-Host "Query completed successfully. Results exported to $outputPath."

Script Explanation

  • Filter: The filter is set to "*" to retrieve all user accounts.
  • Properties: Specifies the attributes to retrieve for each user, such as DisplayName, mail, lastlogontimestamp, and more.
  • Scope: Set to "Subtree" to search the entire directory.
  • BaseDN: The base distinguished name where the search starts (e.g., "DC=contoso,DC=com").
  • CSV Export: The output is formatted with timestamp conversions and exported to a CSV file at the path specified in $outputPath.

Running the Script

To execute this script:

  1. Open PowerShell with appropriate permissions.
  2. Copy and paste the code into the PowerShell console.
  3. Check the output path (in this case, C:\CSV\ADInfo.csv) for the exported CSV file with the retrieved AD user information.

Conclusion

This PowerShell script is a valuable tool for administrators who need to retrieve and export Active Directory user information. By modifying the $filter or $baseDN, you can customize the search to target specific users or organizational units. Feel free to adjust the $properties to include additional attributes as needed.

Let me know if you have questions or suggestions for other PowerShell scripts related to Active Directory management!

Share this content:

Click to rate this post!
[Total: 1 Average: 5]
Avatar for Andrew Armstrong

About Andrew Armstrong

Founder of TechyGeeksHome and Head Editor for over 15 years! IT expert in multiple areas for over 26 years. Sharing experience and knowledge whenever possible! Making IT Happen.

View all posts by Andrew Armstrong

Leave a Reply

Your email address will not be published. Required fields are marked *