Cómo copiar membresías de grupos de AD a otro usuario mediante PowerShell

Al administrar Active Directory, especialmente en configuraciones grandes, es común tener que clonar las membresías de grupo de un usuario a otro, por ejemplo, al incorporar a un nuevo empleado o reorganizar equipos. Hacerlo manualmente en la consola de ADUC puede ser un verdadero fastidio, sobre todo si alguien forma parte de docenas de grupos. Por lo tanto, la mejor opción es usar scripts con PowerShell. Ahorra tiempo, reduce errores y, en general, es más eficiente una vez que se domina. Además, si gestiona varios usuarios, la automatización con scripts facilita mucho las cosas.

En la práctica, es bastante sencillo: obtenga una lista de grupos del usuario de origen y agréguelos al usuario de destino. Esto es muy útil cuando alguien deja un departamento y su sustituto necesita el mismo acceso. La clave es asegurarse de que su cuenta tenga permisos para modificar las membresías de grupos; de lo contrario, PowerShell generará un problema. Si ejecuta estos comandos, asegúrese de haber iniciado sesión con privilegios de administrador de dominio o delegados.

Claro que, a veces, Windows lo complica más de lo necesario. Pero una vez que lo consigues, es un proceso bastante sencillo. Ten en cuenta que, a veces, los scripts necesitan pequeños ajustes según tu entorno, especialmente al trabajar con grupos anidados o permisos especiales. Y, si algo sale mal, revisar los registros de seguridad de tu controlador de dominio puede ayudarte a entender por qué un usuario ya no aparece en los grupos correctos.

Cómo copiar la membresía de un grupo de usuarios de AD en PowerShell

Método 1: Copia básica de membresías de grupo de un usuario a otro

Primero, desea ver en qué grupos se encuentra su usuario de origen. Ahí es donde entra en juego Get-ADUser. Use este comando para enumerar todos los grupos:

$getusergroups = Get-ADUser –Identity jsanti -Properties memberof | Select-Object -ExpandProperty memberof

Este comando recupera todos los grupos jsantia los que pertenece el usuario. Nota rápida: en algunas configuraciones, es posible que deba ejecutar PowerShell como administrador o importar explícitamente el módulo de Active Directory Import-Module ActiveDirectorysi no se carga automáticamente.

Una vez que tenga esa lista de grupos, puede canalizarla directamente a Add-ADGroupMember para agregar el nuevo usuario ( a.adams) a todos esos grupos:

$getusergroups | Add-ADGroupMember -Members a.adams -Verbose

Esto tiene sentido: simplemente le estás diciendo a PowerShell: «Toma todos estos grupos y agrégalos a.adams«.Si todo va bien, el usuario de destino será miembro de los mismos grupos que el usuario de origen. Ten en cuenta que probablemente quieras ejecutar esto como administrador de dominio o como un usuario con privilegios delegados para modificar las membresías de los grupos.

Método 2: Usar Get-ADPrincipalGroupMembership para mayor flexibilidad

Este cmdlet es un poco más universal: funciona con usuarios, equipos y grupos. Es especialmente útil si desea copiar las membresías de grupo basándose en la «membresía» real del objeto, no solo en una lista de cadenas DN de grupo. Podría verse así:

$userSource= "jsanti" $userTarget= "a.adams" $sourceGroups = Get-ADPrincipalGroupMembership -Identity $userSource Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $sourceGroups 

Este script extrae todos los grupos jsantia los que pertenecen y luego a.adamslos añade. Es muy fácil, ¿verdad? Recuerda que el cmdlet Add-ADPrincipalGroupMembership espera que le pases la matriz de objetos de grupo del comando anterior.

En algunas máquinas, esto falla la primera vez o aparecen errores extraños, pero generalmente al volver a ejecutarlo o asegurarse de que su sesión tenga los privilegios correctos se soluciona.

Método 3: Crear un archivo de registro para la rendición de cuentas

Si haces esto con frecuencia o simplemente quieres un registro para fines de auditoría, es recomendable crear un archivo de registro. Aquí tienes un script más largo que copia grupos y registros en cada paso:

$logfile="c:\LOG\CopyAdGroup.log" $userSource= "jsanti" $userTarget= "a.adams" $Time = Get-Date Add-Content $logfile -Value $Time -Encoding UTF8 Add-Content $logfile -Value "_________________" Add-Content $logfile -Value ("Copying AD groups from $userSource to $userTarget") -Encoding UTF8 $sourceGroups = (Get-ADPrincipalGroupMembership -Identity $userSource).SamAccountName foreach ($group in $sourceGroups) { Add-Content $logfile -Value ("Adding $userTarget to $group") -Encoding UTF8 try { $log = Add-ADPrincipalGroupMembership -Identity $userTarget -MemberOf $group Add-Content $logfile -Value ("Successfully added to $group") -Encoding UTF8 } catch { Add-Content $logfile -Value ("Error: $($Error[0].Exception. Message)") -Encoding UTF8 continue } } Add-Content $logfile -Value "_________________" 

Este script genera registros que pueden consultarse posteriormente si ocurre algo extraño. No es perfecto, pero ayuda a realizar un seguimiento de lo que hizo el script, especialmente en entornos con mucha actividad.

Consejos adicionales: Monitoreo y automatización

Si quieres ver quién está en qué grupos, consulta los registros de seguridad de tu controlador de dominio y busca eventos sobre cambios en la membresía de los grupos. Otra opción es configurar tareas programadas que ejecuten estos scripts periódicamente, de modo que las membresías de los grupos se mantengan sincronizadas sin necesidad de insertarlas manualmente.

Resumen

  • Utilice Get-ADUser o Get-ADPrincipalGroupMembership para enumerar grupos de usuarios.
  • Canalice esa lista a Add-ADGroupMember o Add-ADPrincipalGroupMembership para clonar membresías.
  • Ejecute scripts como un usuario con privilegios adecuados (normalmente, administrador del dominio).
  • Considere registrar todos los cambios para auditoría.
  • Tenga cuidado con los grupos anidados y los permisos especiales que podrían complicar las cosas.

Resumen

Este enfoque acelera las actualizaciones masivas de usuarios y minimiza los errores en comparación con los clics manuales en ADUC. Claro, hay una curva de aprendizaje inicial, pero una vez que se aprende, es una salvación si se hace esto con frecuencia. Simplemente revise los permisos y lea los cmdlets si surge algo extraño. Crucemos los dedos, esto ayuda a simplificar un poco el proceso.