1.3K
De manera predeterminada, cuando une una computadora o servidor nuevo al dominio de Active Directory (a través de las propiedades de la computadora), crea el objeto de la computadora en el Ordenadores contenedor raíz. Suponga que utiliza una estructura compleja de unidad organizativa de Active Directory (OU de Active Directory) en su dominio con varias políticas de grupo, contenedores delegados y permisos de políticas para otros usuarios. En ese caso, debe transferir equipos desde el contenedor de equipos predeterminado a otra unidad organizativa.
¿Cómo mover objetos en Active Directory usando la consola ADUC?
Antes de sumergirse en el lado de PowerShell, ¿cómo suelen mover los administradores las computadoras y otros objetos a diferentes unidades organizativas? Con la interfaz gráfica de usuario.
Las siguientes instrucciones le mostrarán cómo mover un objeto de computadora del Ordenadores contenedor a otra unidad organizativa mediante el complemento Usuarios y equipos de Active Directory.
- Prensa GANAR+R y correr dsa.msc.
- Expanda la raíz del dominio y seleccione el Ordenadores envase.
- Encuentre el objeto u objetos de la computadora que desea mover. Si hay varias computadoras para mover, puede seleccionarlas con CTRL+Clic. Una vez que esté satisfecho con la selección, haga clic derecho sobre ellos y haga clic en Mover.
- Cuando aparezca el cuadro de diálogo Mover, seleccione la unidad organizativa a la que desea mover los objetos de la computadora. En este ejemplo, querré moverlo a la EE.UU → Florida → Ordenadores contenedor y haga clic DE ACUERDO.
Pista. Puede mover la computadora entre la unidad organizativa con simples operaciones de arrastrar y soltar en ADUC.
Mover una computadora a una unidad organizativa diferente con PowerShell
También puede mover equipos entre unidades organizativas mediante el cmdlet de PowerShell Move-ADObject, que se incluye en el módulo Active Directory de PowerShell. Con este cmdlet, puede mover un objeto o varios objetos (usuario, computadora, grupo de Active Directory) a otra unidad organizativa.
El -Identidad El parámetro acepta el identificador del objeto que se va a mover. Los identificadores válidos son:
- Nombre distinguido — “CN=PC001,OU=Computadoras,OU=Florida,OU=EE.UU.,DC=theitbros,DC=com”
- GUID (objetoGUID) — “9905308d-7d7c-4a71-8113-ea90a9693894”
Nota. El Move-ADObject cmdlet no acepta SamAccountName como un identificador válido.
Encuentre la identidad de la computadora
Para mover una computadora, debe conocer su identidad. Debe obtener el DN o GUID del objeto de equipo. Puede obtener el DN o GUID de la computadora usando el Obtener ADComputer cmdlet.
Get-ADComputer -Identity PC001
Copia el Nombre distinguido o GUID de objeto valor.
Relacionado. Consulta nuestro tutorial Ejemplos de consultas LDAP de Active Directory.
Encuentre la ruta de la unidad organizativa de destino
A continuación, busquemos la ruta de la unidad organizativa de destino. No existe una forma exacta de obtener la unidad organizativa específica a menos que ya conozca la ruta exacta. Lo que podemos hacer es ejecutar el Get-ADOrganizationalUnit cmdlet con un filtro.
Ya que estamos buscando el “California>Computadoras“OU, podemos filtrar el nombre”ORDENADORES”.
Get-ADOrganizationalUnit -Filter 'Name -like "COMPUTERS"' | ` Format-Table Name, DistinguishedName, ObjectGUID
Puede obtener múltiples resultados, por lo que debe buscar el específico de la lista y copiar el DN o GUID.
Mover la computadora a OU
Una vez que tenga las rutas de la computadora y la unidad organizativa, es hora de mover la computadora. Por ejemplo, para mover la computadora PC001 desde el «Florida>Computadoras” OU a “California>Computadoras”, ejecute el siguiente comando.
Move-ADObject ` -Identity 'CN=PC001,OU=Computers,OU=Florida,OU=USA,DC=theitbros,DC=com' ` -TargetPath 'OU=Computers,OU=California,OU=USA,DC=theitbros,DC=com'
Desglosemos el comando:
- Move-ADObject es el cmdlet utilizado para mover un objeto de AD.
- Identidad ‘CN=PC001,OU=Computadoras,OU=Florida,OU=EE.UU.,DC=theitbros,DC=com’ especifica la identidad del objeto que se va a mover. En este caso, el objeto que se mueve es una computadora con el nombre común (CN) «PC001» ubicado en la estructura de la unidad organizativa: Computadoras -> Florida -> EE. UU. -> theitbros.com.
- TargetPath ‘OU=Computadoras,OU=California,OU=EE.UU.,DC=theitbros,DC=com’ especifica la ruta de destino donde se moverá el objeto. En este ejemplo, la ruta de destino es la estructura de la unidad organizativa: Computadoras -> California -> EE. UU. -> theitbros.com.
Otro enfoque es canalizar el Obtener AdComputer resultado de Mover-AdObject.
Get-ADComputer -Identity PC001 | ` Move-ADObject -TargetPath 'OU=Computers,OU=California,OU=USA,DC=theitbros,DC=com'
Pero tenga en cuenta que este método no tiene manejo de errores. Si el nombre de la computadora que especificó es incorrecto o no existe, el comando falla.
Traslado de equipos entre dominios con PowerShell
El Move-ADObject cmdlet puede mover un objeto de computadora de un dominio a otro dentro del bosque de AD. Mover una computadora entre dominios de Active Directory requiere que especifique un DC de origen y de destino.
Tanto el controlador de dominio de origen como el de destino deben ser propietarios de la función RID Master FSMO en sus dominios. A continuación se muestra un ejemplo de cómo mover la computadora entre dominios de AD.
Get-ADComputer -Identity PC001 | ` Move-ADObject ` -TargetPath "OU=Computers,DC=TargetDomain,DC=tld" ` -TargetServer "TargetDC.TargetDomain.tld " ` -Server "SourceDC.SourceDomain.tld"
Mover varias computadoras a una unidad organizativa diferente con PowerShell
Si bien las secuencias de comandos de PowerShell son la forma de facto de automatizar las tareas de Active Directory, como mover computadoras a otras unidades organizativas, a veces lo que requiere el trabajo es una combinación de enfoques interactivos y automatizados.
Selección de equipos y unidades organizativas de una cuadrícula
Si necesita mover varias computadoras del contenedor Computadoras a otras unidades organizativas, puede seleccionar las computadoras y la unidad organizativa de una cuadrícula en lugar de compilarlas manualmente en una lista. ¿Cómo? Déjame mostrarte usando este ejemplo.
- Primero, ejecute el siguiente comando para enumerar todas las computadoras en una cuadrícula. Este ejemplo busca en todo el dominio:
$ADComputers = Get-ADComputer -Filter * | ` Select-Object -Property Name, DistinguishedName | ` Sort-Object -Property Name | ` Out-GridView -PassThru -Title "Select Computers to Move" | ` Select-Object -ExpandProperty DistinguishedName
- La cuadrícula muestra una lista de todas las computadoras AD. Seleccione todas las computadoras que desea mover a otra unidad organizativa y haga clic en DE ACUERDO. En este ejemplo, estoy seleccionando cuatro servidores para mover.
El Nombre distinguido de sus computadoras seleccionadas ahora está almacenada en el $ADComputadoras variable. - A continuación, ejecute el siguiente comando para mostrar todas las unidades organizativas en otra cuadrícula:
$ADOU = Get-ADOrganizationalUnit -Filter * -Properties CanonicalName | ` Select-Object -Property CanonicalName, DistinguishedName | ` Sort-Object -Property CanonicalName | ` Out-GridView -PassThru -Title "Select the target OU" | ` Select-Object -ExpandProperty DistinguishedName
- Una vez que la cuadrícula enumere todas las unidades organizativas, seleccione la unidad organizativa de destino para el movimiento y haga clic en DE ACUERDO:
Nota. No seleccione varias unidades organizativas.
En este paso, seleccionaré el ‘OU=Servidores,OU=California,OU=EE.UU.,DC=theitbros,DC=com‘ envase.
La unidad organizativa que seleccionó ahora está almacenada en el $ADOU variable. - Opcionalmente, podemos previsualizar la lista de equipos y la OU para confirmar nuestra selección:
$ADComputers $ADOU
- Finalmente, ejecute el siguiente comando para mover las computadoras a la unidad organizativa seleccionada:
$ADComputers | ForEach-Object { Move-ADObject -Identity $_ -TargetPath $ADOU -Verbose }
Y observe cómo PowerShell mueve las computadoras seleccionadas a la unidad organizativa de destino.
Uso de archivo como entrada
Otra forma de ejecutar un movimiento masivo de computadoras es recopilando una lista de computadoras en un archivo de texto o CSV.
- Primero, cree un nuevo archivo llamado computadoras.txt y llénelo con los nombres de las computadoras para mover.
- A continuación, defina la unidad organizativa de destino en su secuencia de comandos. En este ejemplo, el objetivo es el Londres>Servidores UNED:
$TargetOU = "OU=Servers,OU=London,OU=UK,DC=theitbros,DC=com"
- Importe los nombres de los equipos desde el ordenadores.txt archivo en el $ADComputadoras variable:
$ADComputers = Get-Content .\computers.txt
- Finalmente, ejecute este script para mover las computadoras:
foreach ($computerName in $ADComputers) { try { if (($currentComputer = Get-ADComputer -Identity $computerName -ErrorAction Stop)) { Move-ADObject -Identity $currentComputer -TargetPath $TargetOU -ErrorAction Stop "OKAY: Moved $($computerName) to $TargetOU" | Out-Default } } catch { "FAIL: $($_.Exception.Message)" | Out-Default } }
Este script incluye lógica de manejo de errores para probar si el nombre de la computadora existe antes de intentar el movimiento. Devuelve un estado de si el movimiento fue exitoso o fallido.
Mover varios usuarios de Active Directory a otra unidad organizativa mediante PowerShell
El Move-ADObject cmdlet también puede mover usuarios de Active Directory entre unidades organizativas.
Mover usuarios según el atributo
Ejecute el siguiente resumen de PowerShell para mover una cuenta de usuario a una nueva unidad organizativa. Este comando mueve al usuario ‘o colina‘ a la unidad organizativa de usuarios de Florida.
Get-ADUser -Identity ohill | ` Move-ADObject ` -TargetPath "OU=Users,OU=Florida,OU=USA,DC=theitbros,DC=com" ` -WhatIf
Pista. El -Y si switch se utiliza para obtener una vista previa de la operación sin ejecutarla.
A veces, es posible que deba mover varias cuentas de usuario en función de algunas propiedades de usuario de un contenedor de AD específico a una nueva unidad organizativa. En este ejemplo, puede utilizar el -Filtrar parámetro para filtrar qué cuentas de usuario se moverán.
Suponga que desea mover usuarios cuyos Ciudad el valor del atributo es igual Londres a la unidad organizativa de Londres; aquí hay un ejemplo:
Get-ADUser -Filter 'City -eq "London"' | ` Move-ADObject ` -TargetPath "OU=Users,OU=London,OU=UK,DC=theitbros,DC=com" ` -WhatIf
Mover usuarios de una lista
Puede mover usuarios de AD de forma masiva a otra unidad organizativa desde un archivo de texto. En este ejemplo, el archivo de texto llamado usuarios.txt contiene una lista de nombres de usuario.
Ahora ejecute el siguiente script para mover a los usuarios a la unidad organizativa de destino. Reemplace la $TargetOU con la ruta de la unidad organizativa de destino.
$TargetOU = "OU=Users,OU=California,OU=USA,DC=theitbros,DC=com" $ADUsers = Get-Content .\users.txt foreach ($username in $ADUsers) { try { if (($currentUser = Get-ADUser -Identity $username -ErrorAction Stop)) { Move-ADObject -Identity $currentUser -TargetPath $TargetOU -ErrorAction Stop "OKAY: Moved $($username) to $TargetOU" | Out-Default } } catch { "FAIL: $($_.Exception.Message)" | Out-Default } }
Verá un resultado similar a la siguiente captura de pantalla.
Conclusión
En conclusión, PowerShell es una poderosa herramienta para que los administradores de sistemas administren y organicen su entorno de Active Directory de manera eficiente. La capacidad de mover equipos a unidades organizativas (OU) específicas a través de PowerShell agiliza las tareas administrativas y ahorra tiempo. Al usar el Move-ADObject cmdlet, los administradores pueden automatizar la organización de las computadoras dentro de la red, reduciendo los errores manuales y asegurando la consistencia.
La capacidad de PowerShell para mover equipos a unidades organizativas ofrece varios beneficios. Automatiza tareas repetitivas, manteniendo la coherencia y la escalabilidad en toda la red. Además, los administradores pueden personalizar el proceso para cumplir con sus requisitos específicos, incorporándolo a tareas o flujos de trabajo programados. Esta flexibilidad les permite automatizar movimientos en función de condiciones o eventos predefinidos.
Si bien esta publicación de blog se centró en mover computadoras a unidades organizativas, es importante resaltar que PowerShell proporciona una amplia gama de funcionalidades para la administración de Active Directory. Al aprovechar la extensa biblioteca de cmdlet de PowerShell, los administradores pueden automatizar varias tareas administrativas, desde la administración de usuarios hasta la administración de políticas de grupo. El dominio de PowerShell permite a los administradores mejorar la productividad, reducir los errores y contribuir a un entorno de TI más eficiente y organizado.