contar_equipos_por_ou_en_active_director

This is an old revision of the document!


KB: Contar equipos por OU en Active Directory

Problema

Necesitamos saber cuántos equipos hay en cada sub-OU dentro de un contenedor, por ejemplo:

  • OU=Equipos WSUS
    • OU=Windows 10
    • OU=Windows 11

Entorno

  • Active Directory
  • PowerShell con módulo ActiveDirectory instalado
  • Usuario con permisos de lectura en AD

Solución

Ejecutar en PowerShell:

Import-Module ActiveDirectory
 
Get-ADComputer -SearchBase "OU=Equipos WSUS,DC=bio4,DC=local" -Filter * |
    Group-Object { ($_).DistinguishedName -split ',' | Where-Object { $_ -like 'OU=*' } | Select-Object -First 1 } |
    Select-Object @{Name='OU';Expression={ $_.Name -replace '^OU=' }}, Count

Ejemplo de salida

OU         Count
--         -----
Windows 10    15
Windows 11    23

Explicación

  • Get-ADComputer con `-SearchBase` limita la búsqueda a la OU deseada.
  • DistinguishedName contiene toda la ruta en AD (CN, OU, DC).
  • Al hacer `-split ','` separamos en bloques; filtramos los que empiezan con `OU=`.
  • `Select-Object -First 1` toma la primera OU debajo de la raíz buscada.
  • Group-Object agrupa por esa OU y cuenta objetos.

Variantes

Contar solo equipos habilitados:

Get-ADComputer -SearchBase "OU=Equipos WSUS,DC=bio4,DC=local" -Filter 'Enabled -eq $true' | ...

Listar además los nombres de los equipos por OU:

Get-ADComputer -SearchBase "OU=Equipos WSUS,DC=bio4,DC=local" -Filter * |
    Group-Object { ($_).DistinguishedName -split ',' | Where-Object { $_ -like 'OU=*' } | Select-Object -First 1 } |
    ForEach-Object {
        Write-Output "OU: $($_.Name)"
        $_.Group | Select-Object -ExpandProperty Name
        Write-Output ""
    }

Notas

  • El módulo ActiveDirectory se instala con RSAT en Windows 10/11, o ya está en servidores AD.
  • Ajustar el SearchBase al DN de la OU principal.
  • Si hay más niveles de sub-OUs, puede ser necesario modificar la parte del `split` para agrupar correctamente.
contar_equipos_por_ou_en_active_director.1759501020.txt.gz · Last modified: 2025/10/03 14:17 by oso