Public/Domain/Get-ADOUInfo.ps1

function Get-ADOUInfo {
    
    try {
        Write-Log "Retrieving OU information for domain: $DomainName..." -Level Info
        
        $ous = Get-ADOrganizationalUnit -Filter * -Properties * -ErrorAction Stop
        
        $ouInfo = foreach ($ou in $ous) {
            [PSCustomObject]@{
                Name                 = $ou.Name
                DistinguishedName    = $ou.DistinguishedName
                Description          = $ou.Description
                Created              = $ou.Created
                Modified             = $ou.Modified
                ChildOUs             = ($ou.DistinguishedName -split ',OU=' | Select-Object -Skip 1) -join ',OU='
                DelegatedPermissions = $permissions
            }
        }
        
        return $ouInfo
    }
    catch {
        Write-Log "Error retrieving OU information for $DomainName : $($_.Exception.Message)" -Level Error
        return $null
    }
}