Microsoft Active Directory sirve como punto centralizado para la administración, autorización y autenticación. En AD, el acceso a los recursos de red se concede a los principales de seguridad, como las cuentas de usuario y las cuentas de equipo, y esos permisos pueden cambiar con el tiempo. Para simplificar la gestión del acceso y mejorar la seguridad, las medianas y grandes empresas suelen utilizar grupos de seguridad de Active Directory, que pueden contener cuentas de usuario, cuentas de ordenador y otros grupos. También suelen utilizar grupos de distribución para gestionar las listas de distribución de correo electrónico. Tanto los grupos de seguridad como los de distribución tienen identificadores de seguridad únicos (SID) e identificadores únicos globales (GUID).
El snap-in MMC de ADUC es estupendo para gestionar ambos tipos de grupos, pero PowerShell es una forma mucho más eficiente de gestionarlos en bloque.
Si aún no está familiarizado con los grupos de AD y la administración de grupos, lea la guía de mejores prácticas de administración de grupos de Active Directory antes de continuar.
Además, tenga en cuenta que para utilizar estos scripts de PowerShell, debe importar el módulo para interactuar con AD: el módulo de Active Directory para Microsoft Windows PowerShell. Este módulo se introdujo en Windows Server 2008 R2 y está habilitado por defecto en Windows Server 2012 y posteriores. Puede obtener la lista completa de cmdlets del módulo AD ejecutando el siguiente comando:
Get-Command -Module ActiveDirectory
La lista completa contiene 147 cmdlets; sin embargo, sólo estos once están relacionados con los grupos de Active Directory:
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
Crear un grupo de Active Directory con PowerShell
Para crear un grupo de AD, utilice el cmdlet New-ADGroup. Puede obtener su sintaxis ejecutando el siguiente comando:
Get-Command New-ADGroup –Syntax
La forma más sencilla de crear un grupo es ejecutar este breve script:
New-ADGroup "Group Name"
El sistema le pedirá que especifique el parámetro «GroupScope» y, a continuación, creará un nuevo grupo. Sin embargo, este grupo tendrá valores por defecto, como:
- Se creará en el contenedor LDAP por defecto llamado «Usuarios».
- Tendrá el tipo de grupo «Seguridad».
- Los campos miembros, miembro de, descripción, correo electrónico y notas estarán todos en blanco.
Imaginemos que queremos crear un grupo de seguridad llamado «Calidad» en nuestro DC de AD. Utilicemos los siguientes parámetros: Debe estar en la OU «Producción» (-Ruta), debe ser un grupo de seguridad (-GroupCategory), y debe ser global (-GroupScope).
New-ADGroup "Quality" -Path "OU=Production,DC=enterprise,dc=com" -GroupCategory Security -GroupScope Global -PassThru –Verbose
Si quieres hacer un grupo de distribución universal, simplemente cambia el parámetro -GroupCategory a «Distribución» y el parámetro -GroupScope a «Universal.» También puede cambiar la ruta LDAP cambiando el parámetro -Path.
Eliminación de un grupo de Active Directory con PowerShell
Para eliminar un grupo de AD, utilice el cmdlet Remove-ADGroup. El script más sencillo para ello será el siguiente:
Remove-ADGroup -Identity Quality
Se le pedirá que confirme la eliminación del grupo.
Añadir usuarios y equipos a un grupo con PowerShell
Puede añadir usuarios a un grupo de AD con el cmdlet Add-AdGroupMember. Por ejemplo, si necesita añadir dos usuarios, B.Jackson y E.Franklin, al grupo «Calidad», este es el aspecto que tendría el script:
Add-AdGroupMember -Identity Quality -Members B.Jackson, E.Franklin
Una vez que haya añadido usuarios a un grupo de seguridad, puede ejecutar el script siguiente para verificar que aparecen como miembros:
Get-ADGroupMember -Identity Quality
Si necesita añadir usuarios a otro grupo de seguridad o de distribución, como «Domain Admins», especifique «Domain Admins» como valor del parámetro -Identity. Si necesita que un grupo sea miembro de otro, especifique un nombre de grupo como valor del parámetro -Members. El mismo principio se aplica a las cuentas de ordenador, pero tendrá que añadir un signo de dólar ($) al final del nombre de la cuenta de ordenador. Por ejemplo, para añadir el ordenador «WKS043» a un grupo, especifique «WKS043$» como valor del parámetro -Miembro:
Add-AdGroupMember -Identity Quality -Members WKS043$
Añadir un usuario a varios grupos
Para añadir un usuario a varios grupos a la vez, ejecute el siguiente script.
"Managers","Quality" | Add-ADGroupMember -Members ` (Read-Host -Prompt "Enter User Name")
Se le pedirá que introduzca el nombre de usuario.
Añadir usuarios a un grupo desde un archivo CSV
Si desea añadir un gran número de usuarios a un grupo, puede especificarlos en un archivo CSV y luego importar ese archivo. Tenga en cuenta que la lista de los nombres de usuario en el archivo CSV debe contener los SamAccountNames en la columna «users», como se muestra a continuación:
Para añadir usuarios al grupo desde un archivo CSV, ejecute el siguiente script de PowerShell:
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity "Quality" -members $_.users}
Copiar usuarios de un grupo a otro
Si desea copiar todos los miembros de un grupo a otro grupo, ejecute el siguiente script:
Get-ADGroupMember "Quality" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "QualityControl" -Members $_}
Quitar usuarios o equipos de un grupo
Para eliminar un usuario de un grupo, utilice el cmdlet Remove-ADGroupMember:
Remove-ADGroupMember -Identity Quality -Members J.Robinson
Para eliminar una cuenta de equipo de un grupo, especifique el nombre del equipo con un signo de dólar ($) al final para el valor del parámetro -Members.
Eliminar varias cuentas de usuario de un grupo
Una forma sencilla de eliminar varios usuarios de un grupo de AD es crear un archivo CSV con la lista de nombres de usuario y, a continuación, eliminar esos usuarios del objeto de grupo mediante este script:
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity "Quality" -members $_.users}
Eliminar un usuario de todos los grupos
Para eliminar un usuario de todos los grupos, ejecute este script:
Get-ADUser -Identity E.Franklin -Properties MemberOf | ForEach-Object { $_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false}
Tenga en cuenta que el usuario perderá toda la pertenencia a los grupos, excepto «Usuarios del dominio», que se puede eliminar manualmente si es necesario.
Informar sobre los grupos de Active Directory
Ahora que sabemos cómo realizar muchas tareas comunes de gestión de Active Directory relacionadas con los grupos utilizando PowerShell, vamos a ver cómo informar sobre qué grupos existen en AD:
Para listar todos los grupos en AD, utilice el siguiente script:
Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
Por supuesto, también querrá revisar los miembros de los grupos de AD y los cambios de pertenencia a los mismos. Aquí hay enlaces a las instrucciones para realizar esas tareas más complejas:
- Cómo supervisar los cambios de pertenencia a grupos de Active Directory
- Cómo obtener informes de pertenencia a grupos de usuarios de AD
- Cómo exportar miembros de un grupo de AD concreto
- Administrar OUs y mover sus objetos con PowerShell
Conclusión
Ahora que ha aprendido a gestionar grupos y pertenencia a grupos en Active Directory utilizando scripts de PowerShell, intente realizar algunas de las tareas de administración de grupos usted mismo. Sin embargo, tenga cuidado y no olvide habilitar la función de la papelera de reciclaje de Active Directory para poder deshacer fácilmente los cambios si algo sale mal. Recuerde que el complemento MMC de ADUC es excelente para administrar grupos y la pertenencia a grupos, pero PowerShell es mucho mejor para administrar grupos en bloque.