Compartir vía


cmdlets de Microsoft Entra versión 2 para la administración de grupos

En este artículo se incluyen ejemplos de cómo usar PowerShell para administrar grupos en Microsoft Entra ID, parte de Microsoft Entra. También se indica cómo configurar con el módulo de PowerShell de Microsoft Graph. En primer lugar, debe descargar el módulo de PowerShell de Microsoft Graph.

Instale el módulo de PowerShell de Microsoft Graph

Para instalar el módulo de PowerShell de MgGroup, use los siguientes comandos:

    PS C:\Windows\system32> Install-module Microsoft.Graph

Para comprobar que el módulo esté listo para usar, ejecute el siguiente comando:

PS C:\Windows\system32> Get-Module -Name "*graph*"

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Script     1.27.0                Microsoft.Graph.Authentication      {Add-MgEnvironment, Connect-MgGraph, Disconnect-MgGraph, Get-MgContext…}
Script     1.27.0                Microsoft.Graph.Groups              {Add-MgGroupDriveListContentTypeCopy, Add-MgGroupDriveListContentTypeCopyF…

Ahora puede empezar a usar los cmdlets del módulo. Para obtener una descripción completa de los cmdlets del módulo de Microsoft Graph, consulte la documentación de referencia en línea para PowerShell de Microsoft Graph.

Conexión al directorio

Antes de empezar a administrar los grupos mediante los cmdlets de PowerShell de Microsoft Graph, debe conectar la sesión de PowerShell al directorio que desea administrar. Use el comando siguiente:

    PS C:\Windows\system32> Connect-MgGraph -Scopes "Group.ReadWrite.All"

El cmdlet le pide las credenciales que quiere utilizar para tener acceso al directorio. En este ejemplo, vamos a utilizar karen@drumkit.onmicrosoft.com para tener acceso al directorio de demostración. El cmdlet devuelve una confirmación para mostrar que la sesión se ha conectado correctamente al directorio:

    Welcome To Microsoft Graph!

Ahora puede empezar a usar los cmdlets de MgGraph para administrar grupos en el directorio.

Recuperación de los grupos

Para recuperar grupos existentes del directorio, utilice el cmdlet Get-MgGroups.

Para recuperar todos los grupos del directorio, ejecute el cmdlet sin parámetros:

    PS C:\Windows\system32> Get-MgGroup -All

El cmdlet devuelve todos los grupos del directorio conectado.

Puede usar el parámetro -GroupId para recuperar un grupo específico para el que especifica el id. de objeto del grupo:

    PS C:\Windows\system32> Get-MgGroup -GroupId 5e3eba05-6c2b-4555-9909-c08e997aab18 | fl

El cmdlet devuelve ahora el grupo cuyo id. de objeto coincide con el valor del parámetro especificado:

AcceptedSenders               :
AllowExternalSenders          :
AppRoleAssignments            :
AssignedLabels                :
AssignedLicenses              :
AutoSubscribeNewMembers       :
Calendar                      : Microsoft.Graph.PowerShell.Models.MicrosoftGraphCalendar
CalendarView                  :
Classification                :
Conversations                 :
CreatedDateTime               : 14-07-2023 14:25:49
CreatedOnBehalfOf             : Microsoft.Graph.PowerShell.Models.MicrosoftGraphDirectoryObject
DeletedDateTime               :
Description                   : Sales and Marketing
DisplayName                   : Sales and Marketing
Id                            : f76cbbb8-0581-4e01-a0d4-133d3ce9197f
IsArchived                    :
IsAssignableToRole            :
IsSubscribedByMail            :
LicenseProcessingState        : Microsoft.Graph.PowerShell.Models.MicrosoftGraphLicenseProcessingState
Mail                          : SalesAndMarketing@M365x64647001.onmicrosoft.com
MailEnabled                   : True
MailNickname                  : SalesAndMarketing
RejectedSenders               :
RenewedDateTime               : 14-07-2023 14:25:49
SecurityEnabled               : True

Puede buscar un grupo específico mediante el parámetro - filter. Este parámetro toma una cláusula de filtro ODATA y devuelve todos los grupos que coinciden con él, como en el ejemplo siguiente:

    PS C:\Windows\system32> Get-MgGroup -Filter "DisplayName eq 'Intune Administrators'"


    DeletionTimeStamp            :
    ObjectId                     : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    ObjectType                   : Group
    Description                  : Intune Administrators
    DirSyncEnabled               :
    DisplayName                  : Intune Administrators
    LastDirSyncTime              :
    Mail                         :
    MailEnabled                  : False
    MailNickName                 : 4dd067a0-6515-4f23-968a-cc2ffc2eff5c
    OnPremisesSecurityIdentifier :
    ProvisioningErrors           : {}
    ProxyAddresses               : {}
    SecurityEnabled              : True

Nota:

Los cmdlets de PowerShell de MgGroup implementan el estándar de consulta de OData. Para obtener más información, consulte $filter en Opciones de la consulta del sistema OData mediante el punto de conexión de OData.

Aquí tiene un ejemplo en el que se muestra cómo extraer todos los grupos que no tienen aplicada una directiva de expiración.

Connect-MgGraph -Scopes 'Group.Read.All'
Get-MgGroup -ConsistencyLevel eventual -Count groupCount -Filter "NOT (expirationDateTime+ge+1900-01-01T00:00:00Z)" | Format-List Id

Este ejemplo hace lo mismo que el anterior, pero el script también exporta los resultados a un archivo .csv.

Connect-MgGraph -Scopes 'Group.Read.All'
Get-MgGroup -ConsistencyLevel eventual -Count groupCount -Filter "NOT (expirationDateTime+ge+1900-01-01T00:00:00Z)" | Format-List Id |Export-Csv -Path {path} -NoTypeInformation

En este último ejemplo se muestra cómo recuperar solo los grupos que pertenecen a equipos.

Get-MgGroup -ConsistencyLevel eventual -Count groupCount -Filter "NOT (expirationDateTime+ge+1900-01-01T00:00:00Z) and resourceProvisioningOptions/any(p:p eq 'Team')" | Format-List Id, expirationDateTime, resourceProvisioningOptions

Creación de grupos

Para crear un nuevo grupo en el directorio, use el cmdlet New-MgGroup. Este cmdlet crea un nuevo grupo de seguridad llamado "Marketing":

$param = @{
 description="My Demo Group"
 displayName="DemoGroup"
 mailEnabled=$false
 securityEnabled=$true
 mailNickname="Demo"
}

New-MgGroup @param

Actualización de grupos

Para actualizar un grupo existente, utilice el cmdlet Update-MgGroup. En este ejemplo, vamos a cambiar la propiedad DisplayName del grupo "Administradores de Intune". En primer lugar, buscaremos el grupo mediante el cmdlet Get-MgGroup y aplicaremos un filtro usando el atributo DisplayName:

    PS C:\Windows\system32> Get-MgGroup -Filter "DisplayName eq 'Intune Administrators'"


    DeletionTimeStamp            :
    ObjectId                     : aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    ObjectType                   : Group
    Description                  : Intune Administrators
    DirSyncEnabled               :
    DisplayName                  : Intune Administrators
    LastDirSyncTime              :
    Mail                         :
    MailEnabled                  : False
    MailNickName                 : 4dd067a0-6515-4f23-968a-cc2ffc2eff5c
    OnPremisesSecurityIdentifier :
    ProvisioningErrors           : {}
    ProxyAddresses               : {}
    SecurityEnabled              : True

Después, vamos a cambiar la propiedad Description del nuevo valor de "Administradores de dispositivos de Intune":

    PS C:\Windows\system32> Update-MgGroup -GroupId 958d212c-14b0-43d0-a052-d0c2bb555b8b -Description "Demo Group Updated"

Ahora, si encontramos el grupo nuevo, veremos que la propiedad Description se actualiza para reflejar el nuevo valor:

    PS C:\Windows\system32> Get-MgGroup -GroupId 958d212c-14b0-43d0-a052-d0c2bb555b8b | select displayname, description

    DisplayName Description
    ----------- -----------
    DemoGroup   Demo Group Updated

Eliminación de grupos

Para eliminar grupos del directorio, use el cmdlet Remove-MgGroup de la siguiente manera:

    PS C:\Windows\system32> Remove-MgGroup -GroupId 958d212c-14b0-43d0-a052-d0c2bb555b8b

Administración de pertenencia al grupo

Adición de miembros

Para agregar nuevos miembros a un grupo, utilice el cmdlet New-MgGroupMember. Este comando agrega un miembro al grupo de administradores de Intune que utilizamos en el ejemplo anterior:

    PS C:\Windows\system32> New-MgGroupMember -GroupId f76cbbb8-0581-4e01-a0d4-133d3ce9197f -DirectoryObjectId a88762b7-ce17-40e9-b417-0add1848eb68

El parámetro -GroupId es el id. de objeto del grupo al que desea agregar un miembro y -DirectoryObjectId es el id. de objeto del usuario que desea agregar como miembro al grupo.

Obtención de miembros

Para obtener los miembros existentes de un grupo, use el cmdlet Get-MgGroupMember, como en este ejemplo:

    PS C:\Windows\system32> Get-MgGroupMember -GroupId 2c52c779-8587-48c5-9d4a-c474f2a66cf4

Id                                   DeletedDateTime
--                                   ---------------
aaaaaaaa-bbbb-cccc-1111-222222222222
bbbbbbbb-cccc-dddd-2222-333333333333

Quitar miembros

Para quitar al miembro que agregamos anteriormente al grupo, use el cmdlet Remove-MgGroupMember, como se muestra aquí:

    PS C:\Windows\system32> Remove-MgGroupMemberByRef -DirectoryObjectId 00aa00aa-bb11-cc22-dd33-44ee44ee44ee -GroupId 2c52c779-8587-48c5-9d4a-c474f2a66cf4

Comprobación de miembros

Para comprobar si un usuario pertenece a un grupo, use el cmdlet Select-MgGroupIdsUserIsMemberOf. Este cmdlet toma como parámetros el id. de objeto del usuario que se comprueba si pertenece a uno o varios grupos, así como una lista de grupos para realizar dicha comprobación. La lista de grupos debe proporcionarse como una variable compleja del tipo Microsoft.Open.AzureAD.Model.GroupIdsForMembershipCheck, así que, antes, debemos creamos una variable con ese tipo:

Get-MgUserMemberOf -UserId 00aa00aa-bb11-cc22-dd33-44ee44ee44ee

Id                                   DisplayName Description GroupTypes AccessType
--                                   ----------- ----------- ---------- ----------
5dc16449-3420-4ad5-9634-49cd04eceba0 demogroup   demogroup    {Unified}

El valor devuelto es una lista con los grupos de los que es miembro este usuario. También puede aplicar este método para comprobar si determinados contactos, grupos o entidades de seguridad pertenecen a los grupos de una lista concreta. Para ello, utilice Select-MgGroupIdsContactIsMemberOf, Select-MgGroupIdsGroupIsMemberOf o Select-MgGroupIdsServicePrincipalIsMemberOf

Deshabilitación de la creación de grupos por los usuarios

Puede impedir que los usuarios no administradores creen grupos de seguridad. El comportamiento predeterminado en Microsoft Online Directory Services (MSODS) es permitir que los usuarios no administrativos creen grupos, esté o no habilitada la administración de grupos en autoservicio (SSGM). La configuración de SSGM controla el comportamiento solo en el portal Mis grupos.

Para deshabilitar la creación de grupos por usuarios no administrativos:

  1. Compruebe que los usuarios no administradores pueden crear grupos:

    PS C:\> Get-MgBetaDirectorySetting | select -ExpandProperty values
    
     Name                            Value
     ----                            -----
     NewUnifiedGroupWritebackDefault true
     EnableMIPLabels                 false
     CustomBlockedWordsList
     EnableMSStandardBlockedWords    false
     ClassificationDescriptions
     DefaultClassification
     PrefixSuffixNamingRequirement
     AllowGuestsToBeGroupOwner       false
     AllowGuestsToAccessGroups       true
     GuestUsageGuidelinesUrl
     GroupCreationAllowedGroupId
     AllowToAddGuests                true
     UsageGuidelinesUrl
     ClassificationList
     EnableGroupCreation             true
    
  2. Si devuelve EnableGroupCreation : True, los usuarios no administrativos pueden crear grupos. Para deshabilitar esta característica:

     Install-Module Microsoft.Graph.Beta.Identity.DirectoryManagement
     Import-Module Microsoft.Graph.Beta.Identity.DirectoryManagement
     $params = @{
     TemplateId = "62375ab9-6b52-47ed-826b-58e47e0e304b"
     Values = @(		
     	@{
     		Name = "EnableGroupCreation"
     		Value = "false"
     	}		
     )
     }
     Connect-MgGraph -Scopes "Directory.ReadWrite.All"
     New-MgBetaDirectorySetting -BodyParameter $params
    
    

Administración de propietarios de grupos

Para agregar propietarios a un grupo, utilice el cmdlet New-MgGroupOwner:

    PS C:\Windows\system32> New-MgGroupOwner -GroupId 0e48dc96-3bff-4fe1-8939-4cd680163497 -DirectoryObjectId 92a0dad0-7c9e-472f-b2a3-0fe2c9a02867

El parámetro -GroupId es el identificador de objeto del grupo al que queremos agregar un propietario y -DirectoryObjectId es el identificador de objeto del usuario o la entidad de servicio que queremos agregar como propietario.

Para recuperar los propietarios de un grupo, utilice el cmdlet Get-MgGroupOwner:

    PS C:\Windows\system32> Get-MgGroupOwner -GroupId 0e48dc96-3bff-4fe1-8939-4cd680163497

El cmdlet devuelve la lista de propietarios (usuarios y entidades de servicio) del grupo especificado:

    Id                                       DeletedDateTime
    --                                       ---------------
    8ee754e0-743e-4231-ace4-c28d20cf2841
    85b1df54-e5c0-4cfd-a20b-8bc1a2ca7865
    4451b332-2294-4dcf-a214-6cc805016c50

Si desea quitar un propietario de un grupo, utilice el cmdlet Remove-MgGroupOwnerByRef:

    PS C:\Windows\system32> Remove-MgGroupOwnerByRef -GroupId 0e48dc96-3bff-4fe1-8939-4cd680163497 -DirectoryObjectId 92a0dad0-7c9e-472f-b2a3-0fe2c9a02867

Alias reservados

Cuando se crea un grupo, algunos de los puntos de conexión permiten al usuario final especificar un mailNickname o alias que se usarán como parte de la dirección de correo electrónico del grupo. Los grupos con los siguientes alias de correo electrónico con privilegios elevados solo puede crearlos un administrador global de Microsoft Entra. 

  • abuse
  • admin
  • administrator
  • hostmaster
  • majordomo
  • postmaster
  • root
  • secure
  • security
  • ssl-admin
  • webmaster

Escritura diferida de grupos en entornos locales

Hoy en día, se siguen administrando muchos grupos en Active Directory local. Para responder a las solicitudes para sincronizar grupos en la nube de nuevo con el entorno local, la característica de escritura diferida de grupos para Microsoft Entra ID mediante la sincronización en la nube de Microsoft Entra ya está disponible.

Importante

La versión preliminar pública de Escritura diferida de grupos V2 en Sincronización de Microsoft Entra Connect ya no estará disponible después del 30 de junio de 2024. Esta característica se interrumpirá en esta fecha y ya no se admitirá en Sincronización Connect para aprovisionar grupos de seguridad en la nube en Active Directory. La característica seguirá funcionando más allá de la fecha de interrupción; sin embargo, ya no recibirá soporte técnico después de esta fecha y puede dejar de funcionar en cualquier momento sin previo aviso.

Ofrecemos una funcionalidad similar en Microsoft Entra Cloud Sync denominada Aprovisionamiento de grupos en Active Directory que puedes usar en lugar de Escritura diferida de grupos v2 para aprovisionar grupos de seguridad en la nube en Active Directory. Estamos trabajando para mejorar esta funcionalidad en Cloud Sync junto con otras nuevas características que estamos desarrollando en Cloud Sync.

Los clientes que usan esta característica en vista previa (GB) en Connect Sync deben cambiar su configuración de Connect Sync a Cloud Sync. Puedes optar por mover toda la sincronización híbrida a Cloud Sync (si es compatible con tus necesidades). También puedes ejecutar Sincronización en la nube en paralelo y mover solo el aprovisionamiento de grupos de seguridad en la nube en Active Directory a Sincronización en la nube.

Para los clientes que aprovisionan grupos de Microsoft 365 en Active Directory, puedes seguir usando Escritura diferida de grupos v1 para esta funcionalidad.

Puede evaluar el traslado exclusivo a Cloud Sync mediante el asistente de sincronización de usuario.

Pasos siguientes

Puede encontrar más documentación sobre PowerShell para Azure Active Directory en el artículo sobre los cmdlets de Microsoft Entra.