Magic Quadrant™ para la gestión de acceso privilegiado 2025: Netwrix reconocida por cuarto año consecutivo. Descarga el informe.

Plataforma
Centro de recursosBlog
Gestión de OUs y traslado de sus objetos con PowerShell

Gestión de OUs y traslado de sus objetos con PowerShell

Jun 26, 2018

Una unidad organizativa (OU) es un contenedor en Active Directory donde se pueden almacenar usuarios, grupos y computadoras, así como otras OUs. Cada AD domain puede tener su propia jerarquía de unidades organizativas.

En este artículo, aprenderá sobre la gestión de OU y cómo usar scripts de PowerShell para crear, mover y eliminar unidades organizativas en AD; vincular una Group Policy a una OU; y mover cuentas de computadoras y usuarios a otra OU.

PowerShell ISE es la mejor herramienta para trabajar con scripts de PowerShell. Inicie la herramienta PowerShell ISE con privilegios de administrador presionando “Windows+R” e ingresando “runas /profile /user:Administrator PowerShell_ISE” en la ventana Ejecutar. Escriba la contraseña del administrador cuando se le solicite. Alternativamente, puede hacer clic derecho en el ícono de PowerShell ISE y elegir la opción “Ejecutar como administrador”.

Para trabajar con AD y sus objetos, necesita importar el módulo de Active Directory para Windows PowerShell. En Microsoft Windows Server 2008 R2, necesita habilitar este módulo ejecutando el siguiente comando:

      Import-Module ActiveDirectory
      

En Microsoft Windows Server 2012 y posteriores, este módulo está habilitado por defecto.

Crear OUs en un dominio de Active Directory con PowerShell

Puede crear una nueva unidad organizativa en Active Directory utilizando el cmdlet New-ADOrganizationalUnit y especificando el nombre de un nuevo objeto OU. Por defecto, PowerShell creará la OU en la raíz del dominio. El comando a continuación creará una OU llamada “Regiones” en el DC:

      New-ADOrganizationalUnit “Regions”
      

Si necesita una ruta LDAP de OU diferente, especifique su nombre distinguido utilizando el parámetro cmdlet –Path:

      New-ADOrganizationalUnit “Regions” –Path “OU=Managers,DC=Enterprise,DC=com”
      
Image

Mover una OU a otra dirección LDAP

Si necesita mover una OU a otra ubicación, utilice el cmdlet Move-ADObject. Tenga en cuenta que la OU de destino no debe estar protegida contra la eliminación accidental. Si lo está, utilice este comando para eliminar esa protección:

      Set-ADOrganizationalUnit -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -ProtectedFromAccidentalDeletion $False
      

Ahora puedes mover la OU a otra ubicación:

      Move-ADObject -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -TargetPath "OU=IT,DC=Enterprise,DC=Com"
      

Renombrar una OU

Para cambiar el nombre de una unidad organizativa, utilice el cmdlet Rename-ADObject. El parámetro -Identity especifica el objeto de Active Directory a renombrar y requiere ya sea su nombre distinguido (DN) o GUID.

Este comando cambia el nombre de la OU “Regions” a “Districts”:

      Rename-ADObject -Identity "OU=Regions,OU=IT,DC=enterprise,DC=COM" -NewName Districts
      

Alternativamente, puede utilizar el cmdlet Get-ADOrganizationalUnit con el parámetro -Filter; no requiere la ruta LDAP completa a la OU. Sin embargo, ese cmdlet buscará en todo el AD y la acción se aplicará a todas las OUs que contengan el término de búsqueda en sus nombres:

      Get-ADOrganizationalUnit -Filter "Name -eq 'Regions'" | Rename-ADObject -NewName Countries
      

Aplicar una Directiva de Grupo a una OU

Para asignar una Directiva de Grupo a una OU, utilice el cmdlet New-GPLink que básicamente crea un enlace entre el objeto de Directiva de Grupo (GPO) especificado y la OU. Puede especificar cualquiera de las siguientes propiedades para el enlace:

  • Habilitado — Si el enlace está habilitado, la configuración del GPO se aplica cuando se procesa la Directiva de grupo para el sitio, dominio o unidad organizativa.
  • Aplicado — Si el enlace está aplicado, no puede ser bloqueado en un contenedor de nivel inferior.
  • Orden — El orden especifica la precedencia de las configuraciones de GPO.

El siguiente comando vincula la GPO “Block Software” a la OU “Districts” con el enlace habilitado y forzado:

      New-GPLink -Name "Block Software" -Target "OU=Districts,OU=IT,dc=enterprise,dc=com" -LinkEnabled Yes -Enforced Yes
      
Image

Mover Computadoras y Usuarios a una Nueva OU

Una vez que hayas creado una OU y opcionalmente la hayas vinculado a un GPO, es hora de llenarla con usuarios y computadoras. El cmdlet de PowerShell Move-ADObject mueve cualquier objeto o conjunto de objetos (como un usuario, una computadora, un grupo u otra OU) a una OU diferente. El parámetro -Identity especifica qué objeto o contenedor de Active Directory mover. Ten en cuenta que necesitas ingresar la ruta LDAP completa o el SID del objeto; no puedes usar su SamAccountName. El siguiente ejemplo demuestra cómo mover un usuario (John Brown) a la OU “Districts”:

      Move-ADObject -Identity "CN=John Brown,CN=Users,DC=enterprise,DC=com" -TargetPath "OU=Districts,OU=IT,DC=Enterprise,DC=Com"
      

Utilice la misma sintaxis para mover objetos de computadora. El siguiente comando moverá la computadora “R07GF” al contenedor “Computers”:

      Move-ADObject -Identity "CN=R07GF,OU=CEO,DC=enterprise,DC=com" -TargetPath "CN=Computers,DC=Enterprise,DC=Com
      

Mueva equipos y usuarios de AD a otra OU utilizando un archivo CSV o TXT

Si tiene una lista predefinida de objetos para mover, puede guardarla como un archivo CSV y luego importar ese archivo a Active Directory. La lista CSV debe estar en el siguiente formato:

Utilice este script de PowerShell para mover cuentas de usuario de AD enumeradas en un archivo CSV:

      # Specify target OU. This is where users will be moved.
$TargetOU =  "OU=Districts,OU=IT,DC=enterprise,DC=com"
# Specify CSV path. Import CSV file and assign it to a variable. 
$Imported_csv = Import-Csv -Path "C:tempMoveList.csv" 

$Imported_csv | ForEach-Object {
     # Retrieve DN of user.
     $UserDN  = (Get-ADUser -Identity $_.Name).distinguishedName
     # Move user to target OU.
     Move-ADObject  -Identity $UserDN  -TargetPath $TargetOU
   
 }
      

Para mover cuentas de computadora de AD listadas en un archivo de texto, utilice el siguiente script de PowerShell:

      # Specify path to the text file with the computer account names.
$computers = Get-Content C:TempComputers.txt

# Specify the path to the OU where computers will be moved.
$TargetOU   =  "OU=Districts,OU=IT,DC=enterprise,DC=com" 
ForEach( $computer in $computers){
    Get-ADComputer $computer |
    Move-ADObject -TargetPath $TargetOU

}
      

Eliminar una OU de AD

El cmdlet Remove-ADOrganizationalUnit elimina una OU. La OU no debe estar protegida contra la eliminación accidental. Puede quitar la opción de eliminación accidental para cada OU que contenga “Continents” en su nombre utilizando los cmdlets Get-ADOrganizationalUnit y Set-ADOrganizationalUnit de la siguiente manera:

      Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Set-ADOrganizationalUnit  -ProtectedFromAccidentalDeletion $False
      

Utilice el siguiente comando para eliminar cada OU que contenga “Continents” en su nombre de AD:

      Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Remove-ADOrganizationalUnit –Recursive
      

Se le solicitará confirmar la eliminación:

Image

Tenga en cuenta que el parámetro -Recursive elimina tanto la OU como todos sus objetos secundarios. Los objetos secundarios se eliminarán incluso si tienen activada la protección contra borrado.

Conclusión

Ahora que has aprendido a gestionar las OU en Active Directory utilizando scripts de PowerShell, puedes automatizar una variedad de operaciones sencillas relacionadas con la gestión de OU. Antes de probar estos comandos, asegúrate de activar la característica Active Directory Recycle Bin feature para que puedas revertir fácilmente cualquier eliminación por error. También es prudente realizar un seguimiento cuidadoso de todos los cambios en tus unidades organizativas.

Compartir en

Aprende más

Acerca del autor

Asset Not Found

Jeff Melnick

Director de Ingeniería de Sistemas

Jeff es un ex Director de Ingeniería de Soluciones Globales en Netwrix. Es un bloguero, orador y presentador de Netwrix desde hace mucho tiempo. En el blog de Netwrix, Jeff comparte lifehacks, consejos y trucos que pueden mejorar drásticamente tu experiencia en la administración de sistemas.