Administrar unidades organizativas y mover sus objetos con PowerShell
Una unidad organizativa (OU) es un contenedor en Active Directory donde se pueden almacenar usuarios, grupos y computadoras, así como otras OU. Cada dominio AD puede tener su propia jerarquía de unidades organizativas.
En este artículo, aprenderá sobre la administración de unidades organizativas y cómo utilizar scripts de PowerShell para crear, mover y eliminar unidades organizativas en AD; vincular una política de grupo a una unidad organizativa; y mover cuentas de computadora y de usuario a otra unidad organizativa.
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 icono de PowerShell ISE y elegir la opción "Ejecutar como administrador".
Para trabajar con AD y sus objetos, debe importar el módulo Active Directory para Windows PowerShell. En Microsoft Windows Server 2008 R2, debe habilitar este módulo ejecutando el siguiente comando:
Import-Module ActiveDirectoryEn Microsoft Windows Server 2012 y versiones posteriores, este módulo está habilitado de forma predeterminada.
Cree unidades organizativas 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. De forma predeterminada, PowerShell creará la unidad organizativa en la raíz del dominio. El siguiente comando creará una unidad organizativa denominada "regiones" en el DC:
New-ADOrganizationalUnit “Regions”Si necesita una ruta LDAP de OU diferente, especifique su nombre completo mediante el parámetro de cmdlet -Path :
New-ADOrganizationalUnit “Regions” –Path “OU=Managers,DC=Enterprise,DC=com”Mover una unidad organizativa a otra dirección LDAP
Si necesita mover una unidad organizativa a otra ubicación, utilice el cmdlet Move-ADObject. Tenga en cuenta que la unidad organizativa de destino no debe protegerse contra una eliminación accidental. Si es así, use este comando para eliminar esa protección:
Set-ADOrganizationalUnit -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -ProtectedFromAccidentalDeletion $FalseAhora puedes mover la unidad organizativa a otra ubicación:
Move-ADObject -Identity "OU=Regions,OU=Managers,DC=Enterprise,DC=Com" -TargetPath "OU=IT,DC=Enterprise,DC=Com"Cambiar el nombre de una unidad organizativa
Para cambiar el nombre de una unidad organizativa, utilice el cmdlet Rename-ADObject. El parámetro -Identity especifica el objeto de Active Directory cuyo nombre se va a cambiar y requiere su nombre distintivo (DN) o GUID.
Este comando cambia el nombre de la unidad organizativa "regiones" a "distritos":
Rename-ADObject -Identity "OU=Regions,OU=IT,DC=enterprise,DC=COM" -NewName DistrictsComo alternativa, puede utilizar el cmdlet Get-ADOrganizationalUnit con el parámetro -Filter; no requiere toda la ruta LDAP a la unidad organizativa. Sin embargo, ese cmdlet buscará en todo el AD y la acción se aplicará a todas las unidades organizativas que contengan el término de búsqueda en sus nombres:
Get-ADOrganizationalUnit -Filter "Name -eq 'Regions'" | Rename-ADObject -NewName CountriesAplicar una política de grupo a una unidad organizativa
Para asignar una política de grupo a una unidad organizativa, utilice el cmdlet New-GPLink , que básicamente crea un vínculo entre el objeto de política de grupo (GPO) especificado y la unidad organizativa. Puede especificar cualquiera de las siguientes propiedades para el enlace:
- Habilitado: si el vínculo está habilitado, la configuración del GPO se aplica cuando se procesa la política de grupo para el sitio, dominio u unidad organizativa.
- Aplicado: si el vínculo se aplica, no se puede bloquear en un contenedor de nivel inferior.
- Orden: el orden especifica la prioridad de la configuración del GPO.
El siguiente comando vincula el GPO "Bloquear software" a la unidad organizativa "Distritos" con el vínculo habilitado y aplicado:
New-GPLink -Name "Block Software" -Target "OU=Districts,OU=IT,dc=enterprise,dc=com" -LinkEnabled Yes -Enforced Yes
Mover computadoras y usuarios a una nueva unidad organizativa
Una vez que haya creado una unidad organizativa y, opcionalmente, la haya vinculado a un GPO, es hora de llenarla con usuarios y computadoras. El cmdlet PowerShell Move-ADObject mueve cualquier objeto o conjunto de objetos (como un usuario, una computadora, un grupo u otra unidad organizativa) a una unidad organizativa diferente. El parámetro -Identity especifica qué objeto o contenedor de Active Directory mover. Tenga en cuenta que debe ingresar la ruta LDAP completa o SID del objeto; no puede utilizar su SamAccountName. El siguiente ejemplo demuestra cómo mover un usuario (John Brown) a la unidad organizativa "Distritos":
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 “Computadoras”:
Move-ADObject -Identity "CN=R07GF,OU=CEO,DC=enterprise,DC=com" -TargetPath "CN=Computers,DC=Enterprise,DC=ComMueva computadoras y usuarios de AD a otra unidad organizativa mediante 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 tener 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 AD enumeradas en un archivo de texto, use 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 unidad organizativa de AD
El cmdlet Remove-ADOrganizationalUnit elimina una unidad organizativa. La unidad organizativa no debe protegerse contra una eliminación accidental. Puede eliminar la opción de eliminación accidental para cada unidad organizativa que contenga "Continentes" en su nombre utilizando los cmdlets Get-ADOrganizationalUnit y Set-ADOrganizationalUnit de la siguiente manera:
Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $FalseUtilice el siguiente comando para eliminar de AD todas las unidades organizativas que contengan "Continentes" en su nombre:
Get-ADOrganizationalUnit -filter "Name -eq 'Continents'" | Remove-ADOrganizationalUnit –RecursiveSe le pedirá que confirme la eliminación:
Tenga en cuenta que el parámetro -Recursive elimina tanto la unidad organizativa como todos sus objetos secundarios. Los objetos secundarios se eliminarán incluso si la protección contra eliminación está activada para ellos.
Conclusión
Ahora que ha aprendido cómo administrar unidades organizativas en Active Directory mediante scripts de PowerShell, puede automatizar una variedad de operaciones simples relacionadas con la administración de unidades organizativas. Antes de probar estos comandos, asegúrese de habilitar la función Papelera de reciclaje de Active Directory para poder revertir fácilmente cualquier eliminación errónea. También es inteligente realizar un seguimiento cuidadoso de todos los cambios en sus unidades organizativas.



