Cómo crear una estructura clara de unidades organizativas (OU) en Active Directory mediante PowerShell

Crear nuevas unidades organizativas (UO) en Active Directory puede ser un verdadero fastidio si se hace manualmente cada vez. Especialmente si se está configurando una sucursal o simplemente implementando nuevas estructuras en diferentes regiones. Es fácil olvidar permisos, pasar por alto contenedores anidados o simplemente perder mucho tiempo navegando por ADUC (Usuarios y equipos de Active Directory).

Una forma rápida de gestionar esto es mediante PowerShell. Es un poco extraño, pero usar scripts puede ahorrar horas y es mucho más consistente si se domina. Podrás crear jerarquías de unidades organizativas completas, grupos de seguridad y delegar permisos al instante. Además, puedes añadir todo lo que probablemente harás, como configurar GPO dirigidas a esas unidades organizativas. Eso es lo que hace que la automatización merezca la pena, ¿verdad?

Cómo automatizar la creación de estructuras de unidades organizativas y permisos en Active Directory

Método 1: Creación y administración básica de unidades organizativas de PowerShell

Comience con los módulos de PowerShell correctos, en concreto, el módulo de Active Directory. Este suele provenir de las herramientas RSAT (Herramientas de administración remota del servidor).Si aún no lo ha importado, simplemente haga lo siguiente:

Import-Module ActiveDirectory

Si esto falla, en Windows 10/11 o Server, asegúrese de que RSAT esté instalado desde las características opcionales. Una vez listo, puede crear unidades organizativas con algo como esto:

New-ADOrganizationalUnit -Name "Berlin" -Path "OU=DE, DC=woshub, DC=com" -Description "Berlin branch"

Aquí, «-Path» es crucial: introduce tu unidad organizativa principal o el dominio raíz. Si lo omites, solo se creará una unidad organizativa en el nivel superior, lo cual podría no ser lo que buscas. En algunas configuraciones, este valor predeterminado es suficiente, pero en otras, necesitas la ruta exacta.

Consejo profesional: puede encontrar las rutas actuales navegando en ADUC o usando Get-ADOrganizationalUnit.

Método 2: Ajustar atributos y proteger contra borrados accidentales

De forma predeterminada, AD establece ProtectedFromAccidentalDeletion en $true, lo cual suena bien hasta que quieras eliminar información mediante un script. Para desactivarlo, simplemente introduce la Set-ADOrganizationalUnitsiguiente instrucción:

Get-ADOrganizationalUnit -Identity "OU=Users, OU=Berlin, OU=DE, DC=woshub, DC=com" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $false

De esta forma, no se te impedirá eliminar unidades organizativas de prueba posteriormente. En algunas máquinas, este comando debe ejecutarse como administrador; de lo contrario, podría parecer que no funciona inmediatamente. Normalmente, reiniciar la consola o actualizar el sistema es suficiente.

Método 3: Eliminar unidades organizativas y sus objetos

Si necesita limpiar o restablecer unidades organizativas, Remove-ADObject es su mejor aliado, pero tenga cuidado: -Recursive eliminará todo el contenido. Ejemplo:

Remove-ADObject -Identity "OU=Users, OU=Berlin, OU=DE, DC=woshub, DC=com" -Recursive

Esto es útil si estás probando estructuras o limpiando después de intentos fallidos. Simplemente verifica el DN (nombre distintivo) antes de ejecutar.

Método 4: Construir una estructura de sucursal típica con un script

Supongamos que su empresa tiene varias sucursales, cada una con el mismo patrón de contenedor. Puede crear un script para crear la estructura completa, incluyendo grupos y permisos delegados. A continuación, se muestra un ejemplo simplificado de lo que haría ese script:

# Define variables $Country="DE" $City="HH" $CityFull="Hamburg" $DomainDN=(Get-ADDomain).DistinguishedName $ParentOU= "OU=$Country, $DomainDN" $OUs = @("Admins", "Computers", "Contacts", "Groups", "Servers", "Service Accounts", "Users") # Create main OU for branch $newOU=New-ADOrganizationalUnit -Name $CityFull -Path $ParentOU -Description "A container for $CityFull users" -PassThru # Loop through sub-OU names and create each inside the main OU foreach ($OU in $OUs) { New-ADOrganizationalUnit -Name $OU -Path $newOU } # Create branch admin groups $adminGroupName = "$City" + "_admins" New-ADGroup -Name $adminGroupName -Path ("OU=Admins, " + $newOU. DistinguishedName) -GroupScope Global -PassThru $accountManagersGroup = "$City" + "_account_managers" New-ADGroup -Name $accountManagersGroup -Path ("OU=Admins, " + $newOU. DistinguishedName) -GroupScope Global -PassThru $wksAdminsGroup = "$City" + "_wks_admins" New-ADGroup -Name $wksAdminsGroup -Path ("OU=Admins, " + $newOU. DistinguishedName) -GroupScope Global -PassThru # Grant permissions to specific groups on the Users OU to delegate password reset rights, for example # Note: You’ll probably need to tweak rights based on your needs and use Set-ACL for finer control 

Hay muchas opciones de ampliación, como asignar GPO o delegar permisos específicos en otras unidades organizativas. PowerShell lo facilita bastante una vez que se dominan los conceptos básicos. El script enlazado en GitHub es un buen punto de partida, con muchos comentarios.

Un aviso rápido: conviene revisar la política de ejecución antes de ejecutar scripts (por ejemplo, ejecutar Set-ExecutionPolicy RemoteSigned) o asegurarse de hacerlo como administrador del dominio. De lo contrario, PowerShell podría rechazar la ejecución del script o generar errores.

Resumen

Ejecutar elementos de AD a través de PowerShell puede parecer intimidante al principio, pero una vez que te acostumbras, es una experiencia revolucionaria. Automatizar la creación de unidades organizativas, configurar grupos y delegar permisos de una sola vez: ese es el tipo de cosas que vale la pena el pequeño esfuerzo inicial. Si administras varias ramas o simplemente estás cansado de navegar sin parar, aprender estos scripts te ahorrará mucho tiempo a largo plazo.

Resumen

  • Utilice New-ADOrganizationalUnit para crear unidades organizativas en masa.
  • Modifique los atributos con Set-ADOrganizationalUnit si es necesario.
  • Elimine OU fácilmente con Remove-ADObject.
  • Automatice estructuras anidadas y permisos con scripts de PowerShell.
  • Amplíe agregando GPO u otras tareas personalizadas para cada rama.

Cruzo los dedos para que esto ayude.