Gestionando grupos de Active Directory con Get-ADGroup y más

Usando el módulo ActiveDirectory PowerShell, puedes consultar grupos de AD con Get-AdGroup, agregar, actualizar y eliminar grupos y miembros de grupos. En esta publicación de blog, aprenderás un poco sobre los cmdlets de PowerShell para grupos de Active Directory con un montón de ejemplos como referencia.

Cmdlets de Grupos de Active Directory

Una vez que instalas el módulo ActiveDirectory PowerShell, encontrarás algunos cmdlets disponibles para gestionar grupos.

Cmdlet Name Description
Add-ADGroupMember Used to add members to an AD group.
Add-ADPrincipalGroupMembership Used to add an AD principal to AD groups.
Get-ADGroup Used to return a group or groups from AD.
Get-ADGroupMember Used to return the members of an AD group.
Get-ADPrincipalGroupMembership Used to get the groups an AD principal is a member of.
New-ADGroup Used to create a new AD group.
Remove-ADGroup Used to delete an AD group.
Remove-ADGroupMember Used to remove members from an AD group.
Remove-ADPrincipalGroupMembership Used to remove an AD principal from AD groups.
Set-ADGroup Used to set the properties of an AD group.

Utilizando estos cmdlets y un poco de PowerShell kung-fu, puedes gestionar cada aspecto del grupo de Active Directory con PowerShell.

Encuentra los miembros de un grupo con Get-ADGroupMember

El cmdlet Get-AdGroupMember devuelve todos los miembros de un grupo.

PS51> Get-ADGroupMember -Identity <identity string or object>

Alternativamente, podrías hacer referencia a la propiedad memberOf en un usuario en particular usando el cmdlet Get-Aduser. Para repasar cómo construir filtros, revisa Aprendiendo Filtros de Directorio Activo y LDAP en PowerShell.

Aquí tienes dos ejemplos.

PS51> Get-ADUser -Filter 'memberOf -eq ""'
PS51> Get-ADUser -LDAPFilter '(memberOf=)'

Esto devuelve una colección de objetos ADPrincipal.

Exporta los miembros de un grupo a un archivo CSV.

Esto exporta el nombre, apellido y dirección de correo electrónico de cada usuario. Pasa los resultados de Get-ADGroupMember a Get-ADUser porque estos son objetos ADPrincipal que no tienen todas las propiedades que tienen los objetos ADUser.

PS51> $GroupMembers = Get-ADGroupMember -Identity 'Professional Services Department'
PS51> $GroupMembers | Get-ADUser -Properties GivenName,Surname,Mail | Select-Object GivenName,Surname,Mail | Export-CSV -Path GroupMembers.CSV -NoTypeInformation

Observa el uso del parámetro NoTypeInformation de Export-CSV para garantizar que el archivo CSV sea compatible con otras aplicaciones.

Encuentra grupos sin miembros con Get-ADGroup

Utiliza Get-AdGroup para encontrar grupos mediante filtros. Dos ejemplos a continuación.

PS51> Get-ADGroup -Filter "Members -notlike '*'"
PS51> Get-ADGroup -LDAPFilter "(!(member=*))"

Crea un nuevo grupo de seguridad con New-ADGroup

Crear un nuevo grupo de seguridad utilizando el comando New-AdGroup.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group> -Path '<path of the OU tht will host the new group>'

Si no se suministra un parámetro Path, el nuevo grupo se creará en el contenedor Usuarios. El ámbito del grupo debe ser DomainLocal, Global o Universal.

Crea un nuevo grupo de distribución con New-ADGroup

Utiliza New-AdGroup nuevamente para crear un grupo de distribución. Esta vez, elige una GroupCategory de Distribution.

PS51> New-ADGroup -Name '<group name>' -GroupScope <scope of group>  -GroupCategory Distribution -Path '<path of the OU tht will host the new group>'

Agrega miembros a un grupo con Add-ADGroupMember

La adición de usuarios a un grupo de Active Directory con PowerShell se puede hacer utilizando el cmdlet Add-AdGroupMember o el cmdlet Add-ADPrincipalGroupMembership.

Este comando especifica el grupo como la Identidad.

PS51> Add-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>

Este comando especifica el principal de AD como la Identidad.

PS51> Add-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

Escribe en la propiedad Notes de un grupo con Set-AdGroup

El campo etiquetado como Notes en ADUC está representado por la propiedad Info devuelta por Get-AdGroup.

Primero, encuentra el grupo a cambiar, establece la propiedad Info y luego utiliza Set-AdGroup para confirmar el cambio en AD.

PS51> $group = Get-ADGroup -Identity <identity string or object>
PS51> $group.Info = 'Important notes on this group'
PS51> Set-ADGroup $group

Elimina miembros del grupo con Remove-ADGroupMember

Como todos los cmdlets de PowerShell, puedes usar el parámetro Confirm para que te pidan confirmación antes de realizar un cambio. Este comportamiento también se aplica a los cmdlets Remove-AdGroupMember y Remove-ADPrincipalGroupMembership.

A continuación, puedes eliminar miembros del grupo sin confirmación.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)>
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)>

O puedes optar por eliminar miembros del grupo con confirmación usando el parámetro Confirm.

PS51> Remove-ADGroupMember -Identity <identity string or object> -Members <identity string(s) or ADPrincipal(s)> -Confirm
PS51> Remove-ADPrincipalGroupMembership -Identity <identity string or object> -MemberOf <identity string(s) or ADGroup(s)> -Confirm

Elimina un grupo con Remove-ADGroup

Elimina un grupo sin confirmación y con confirmación.

PS51> Remove-ADGroup -Identity <identity string or object>
PS51> Remove-ADGroup -Identity <identity string or object> -Confirm

Cambia el nombre de un grupo con Rename-ADObject

Puedes cambiar el nombre de un grupo mediante un comando usando Rename-ADObject.

PS51> Rename-ADObject -Identity <identity string or object> -NewName '<new name>'

Obtén el número de grupos con Get-ADGroup

¿Necesitas encontrar el número total de grupos devueltos por Get-AdGroup? Utiliza la propiedad Count.

PS51> (Get-ADGroup -Filter '*').Count

Encuentra grupos con un gerente con Get-ADGroup

Filtra todos los grupos que tienen un gerente asignado con Get-AdGroup y un filtro LDAP bien construido.

PS51> Get-ADGroup -LDAPFilter '(managedby=*)'

No hay un filtro equivalente de PowerShell para esto.

Encuentra grupos gestionados por un usuario específico con Get-ADGroup

Mejora tus habilidades de filtrado y encuentra todos los grupos gestionados por un usuario específico utilizando un filtro de PowerShell o un filtro LDAP.

PS51> Get-ADGroup -Filter 'managedby -eq "<distinguished name of user>"'
PS51> Get-ADGroup -LDAPFilter '(managedby=<distinguished name of user>)'

Establece el manager del grupo con Set-ADGroup

La pestaña Managed By en ADUC para grupos te permite designar a alguien responsable de la membresía del grupo. Esto no significa automáticamente que el manager pueda alterar la membresía del grupo. Para que esto sea posible, se deben cambiar los permisos de seguridad en la propiedad Member del grupo en cuestión.

Marcar la casilla Manager can update membership list para un grupo en Active Directory Users and Computers (ADUC) cambia los permisos para permitir esto.

Managed By tab in Active Directory Users and Computers

Usa Set-ADGroup para establecer el atributo ManagedBy:

PS51> Set-ADGroup -ManagedBy '<distinguished name, GUID, SID or SAM Account name of manager>'

Actualizar la lista de control de acceso requiere algunos pasos adicionales. El siguiente fragmento de código otorga al usuario Kristin Diaz la capacidad de gestionar la membresía del grupo. bf9679c0-0de6-11d0-a285-00aa003049e2 es el GUID para la propiedad Member del grupo.

Si Kristin también está configurada como manager del grupo, la casilla estará marcada. Si no, Kristin seguirá pudiendo gestionar la membresía del grupo pero no se mostrará en ADUC como el manager.

Encuentra contraseñas filtradas y no seguras en tu Active Directory verificando en la lista de contraseñas del NCSC.

$group = Get-ADGroup -Identity 'Professional Services Department'
$manager = Get-ADUser -Identity 'Kristin.Diaz'
$NTPrincipal = New-Object System.Security.Principal.NTAccount $manager.samAccountName
$objectGUID = New-Object GUID 'bf9679c0-0de6-11d0-a285-00aa003049e2'
$acl = Get-ACL "AD:$($group.distinguishedName)"
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $NTPrincipal,'WriteProperty','Allow',$objectGUID
$acl.AddAccessRule($ace)
Set-ACL -AclObject $acl -Path "AD:$($group.distinguishedName)"

Encuentra todos los grupos de seguridad

Enumera todos los grupos de seguridad en Active Directory con PowerShell al limitar tu búsqueda solo a grupos de seguridad con estos dos ejemplos. ¿Cuál es ese filtro LDAP, preguntas? Aprende todo sobre filtros LDAP.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Security"'
PS51> Get-ADGroup -LDAPFilter '(groupType:1.2.840.113556.1.4.803:=2147483648)'

Encuentra grupos de distribución

Usa PowerShell para listar Grupos de Active Directory (distribución) excluyendo grupos de seguridad con estos dos ejemplos.

PS51> Get-ADGroup -Filter 'groupcategory -eq "Distribution"'
PS51> Get-ADGroup -LDAPFilter '(!(groupType:1.2.840.113556.1.4.803:=2147483648))'

Encuentra la membresía de un usuario en un grupo con Get-ADPrincipalGroupMembership

PS51> Get-ADPrincipalGroupMembership -Identity <identity string or object>

Ten en cuenta que este comando requiere acceso a un catálogo global.

Encuentra grupos en una OU, sin incluir sub-OUs

Sé más específico utilizando el parámetro SearchBase para limitar tu búsqueda a una sola OU con estos dos ejemplos.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope OneLevel

Encuentra grupos en una OU, incluyendo sub-OUs

¿Necesitas encontrar todos los grupos en OUs secundarias? Usa un SearchScope de SubTree.

PS51> Get-ADGroup -Filter '*' -SearchBase '<distinguished name of OU>' -SearchScope SubTree
PS51> Get-ADGroup -LDAPFilter '(CN=*)' -SearchBase '<distinguished name of OU>' -SearchScope SubTree

Resumen

Eso concluye nuestra demostración guiada por ejemplos sobre la gestión de grupos de AD con PowerShell. ¡Toma algunos de estos, pruébalos en tu organización y comienza a automatizar!

Source:
https://adamtheautomator.com/get-adgroup/