En entornos corporativos que utilizan Active Directory (AD), es habitual que los administradores necesiten conocer la unidad organizativa (OU) a la que pertenece un equipo. Esta información resulta útil para aplicar directivas de grupo, organizar dispositivos o auditar la infraestructura.
Gracias a PowerShell y a una clave del registro de Windows, es posible acceder a esta información sin depender de herramientas externas.
1. Obtener el Distinguished Name (DN) del equipo
El primer paso es extraer el valor Distinguished-Name desde el registro de Windows. Este valor indica la ubicación completa del equipo en la jerarquía de Active Directory:
(Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine")."Distinguished-Name"
Este comando suele devolver una cadena como:
CN=EQUIPO01,OU=TI,OU=Departamentos,DC=empresa,DC=local
2. Dividir el DN por componentes
Para trabajar mejor con la información, podemos dividir la cadena del DN en sus partes separadas por comas, eliminando espacios innecesarios:
(Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine")."Distinguished-Name" -split ',' | ForEach-Object { $_.Trim() }
Este comando produce una lista como esta:
CN=EQUIPO01
OU=TI
OU=Departamentos
DC=empresa
DC=local
3. Filtrar solo las OUs
Si solo nos interesan las unidades organizativas, podemos aplicar un filtro para conservar únicamente los elementos que comienzan por OU=
:
(Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine")."Distinguished-Name" -split ',' | Where-Object { $_ -like 'OU=*' } | ForEach-Object { $_.Trim() }
Este comando devuelve:
OU=TI
OU=Departamentos
Esto es útil si queremos ver la jerarquía de OUs sin el resto de los componentes del DN.
4. Obtener las OUs en una sola línea
Por último, si queremos unir los valores OU en una sola línea separada por comas, por ejemplo para generar informes:
(((Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine")."Distinguished-Name" -split ',') | Where-Object { $_ -like 'OU=*' } | ForEach-Object { $_.Trim() }) -join ','
Resultado:
OU=TI,OU=Departamentos
Conclusión
Estos comandos de PowerShell permiten extraer de forma precisa y eficiente la ubicación de un equipo dentro del árbol de Active Directory, directamente desde su registro local. Esta técnica es especialmente útil para tareas de administración, automatización de inventarios y validaciones de configuración sin necesidad de hacer consultas directas al controlador de dominio.