Introduction:
This post outlines a PowerShell script designed to export Organizational Units (OUs) from Active Directory into a CSV file. This can be particularly useful for administrators needing a detailed list of OUs for auditing or documentation purposes.
Description:
The script connects to a specified domain controller and retrieves the distinguished names of all OUs in the Active Directory. It then organizes these names into a structured CSV format for easy review and analysis. The output file is saved to a specified location on the user’s machine.
How to Use:
To use this script, update the placeholders with your specific Active Directory domain information, output file path, and domain controller name. Run the script in a PowerShell session with appropriate administrative privileges.
What It Does:
This script automates the process of gathering OU information from Active Directory, splitting the distinguished names into individual OU segments, and exporting the data to a CSV file for further use.
# Import the Active Directory module
Import-Module ActiveDirectory
# Define the search base (root) of the Active Directory
$searchBase = "<put your search base here>"
# Define the output CSV file path
$outputFile = "<put your output file path here>"
# Define the desired OU properties to retrieve
$ouProperties = "DistinguishedName"
# Specify a domain controller to connect to
$domainController = "<put your domain controller here>" # Replace with the hostname of a reachable domain controller
# Perform the search for organizational units
$ous = Get-ADOrganizationalUnit -Filter 'objectClass -eq "organizationalUnit"' -SearchBase $searchBase -Properties $ouProperties -Server $domainController
# Create a custom object to hold the OU information
$ouList = foreach ($ou in $ous) {
$ouDN = $ou.DistinguishedName
$ouSegments = $ouDN -split ',OU=' | Select-Object -Skip 1
$ouProps = [ordered]@{
"DistinguishedName" = $ouDN
}
for ($i = 0; $i -lt $ouSegments.Count; $i++) {
$columnName = "OU$($i + 1)"
$ouProps[$columnName] = $ouSegments[$i] -replace '^OU=', ''
}
[PSCustomObject]$ouProps
}
# Export the OU information to a CSV file
$ouList | Export-Csv -Path $outputFile -NoTypeInformation
Tags: #ActiveDirectory #PowerShell #OUExport #CSV #ITAutomation