Búsqueda de sitios web

Cómo crear grupos con Microsoft Graph PowerShell


En este tutorial, le explicaré cómo crear grupos en Azure Active Directory utilizando Microsoft Graph PowerShell. Analizaremos los diferentes métodos para crear grupos y cualquier peculiaridad en torno a los parámetros disponibles.

Acerca de New-MgGroup

  • Módulo: Microsoft.Graph.Groups
  • Permisos mínimos: Group.ReadWrite.All

New-MgGroup le permite crear nuevos grupos en su inquilino de Microsoft 365 como se define en el cuerpo de la solicitud. Puede encontrar una lista completa de parámetros de grupo en la documentación de referencia aquí o puede ejecutar el siguiente comando en PowerShell.

(Get-Command New-MgGroup).Parameters

De manera similar a lo anterior, también puede ver una lista de todos los permisos que pertenecen al cmdlet New-MgGroup con el siguiente comando.

(Find-MgGraphCommand -Command New-MgGroup).Permissions

También existen dos métodos diferentes para crear un grupo con este cmdlet. Puede usar los parámetros disponibles para definir la configuración de su grupo, como -DisplayName, -MailNickName, etc. o puede incluir toda la información dentro de una tabla hash y usar -BodyParameter. Ambas opciones las cubriré en este tutorial.

Tipos de grupos admitidos con Microsoft Graph PowerShell

Como Microsoft Graph tiene acceso limitado a Exchange, actualmente los únicos tipos de grupos admitidos que puede crear con Microsoft Graph PowerShell son grupos de Microsoft 365 y grupos de seguridad.

Esto significa que no puede utilizar Microsoft Graph PowerShell para crear grupos de distribución o grupos de seguridad habilitados para correo. También es cierto que tampoco puedes crear grupos de Microsoft 365 habilitados para correo.

Si intenta crear un grupo habilitado para correo, recibirá el siguiente error:

New-MgGroup: no se pueden crear grupos de seguridad habilitados para correo ni una lista de distribución.

Para corregir el error, debe asegurarse de que su parámetro -MailEnabled esté establecido en $false.

Cómo crear grupos con Microsoft Graph PowerShell

Para crear un grupo simple, puede utilizar el siguiente ejemplo, que creará un grupo de seguridad:

New-MgGroup -DisplayName 'MySecurityGroup' `
-MailEnabled:$False  `
-MailNickName 'MySecurityGroup' `
-SecurityEnabled

Puede ver en lo anterior que aún debe definir el parámetro -MailEnabled con un valor de $false, aunque no sea compatible.

El siguiente ejemplo es el de una configuración más compleja, aquí he creado un grupo de seguridad dinámico. Para esto, he incluido algunos parámetros adicionales, que incluyen:

  • -GroupTypes: para definir el tipo de grupo como un grupo dinámico.
  • -MemberShipRule: para definir la regla de membresía de qué miembros se agregarán.
  • -MembershipRuleProcessingState: para activar el procesamiento de reglas.
New-MgGroup -DisplayName 'MyDynSecurityGroup' `
-MailEnabled:$False `
-MailNickName 'MyDynSecurityGroup' `
-SecurityEnabled `
-GroupTypes DynamicMembership `
-MembershipRule '(user.userPrincipalName -contains "ourcloudnetwork.com") and (user.accountEnabled -eq True)' `
-MembershipRuleProcessingState On

El parámetro -GroupTypes también nos permite crear un grupo de seguridad estándar o un grupo de Microsoft 365. También puede incluir más de un valor; por ejemplo, el siguiente comando creará un grupo de Microsoft 365 con membresía dinámica.

New-MgGroup -DisplayName 'MyDynM365Group' `
-MailEnabled:$False `
-MailNickName 'MyDynM365Group' `
-SecurityEnabled `
-GroupTypes DynamicMembership,Unified `
-MembershipRule '(user.userPrincipalName -contains "ourcloudnetwork.com")' `
-MembershipRuleProcessingState On

Cómo crear grupos con el parámetro -body

También puede lograr el mismo resultado al crear grupos utilizando el parámetro -bodyparameter.

Para hacer esto, necesitarás crear una tabla hash @{} que contenga todos los valores de tu grupo. Usemos el último ejemplo de la sección anterior y creemos el mismo grupo definiendo la configuración en una tabla hash. A continuación puede ver que hemos creado la tabla hash $GroupBody.

$GroupBody = @{
    DisplayName = "MyDynM365Group"
     MailEnabled         = $false
     MailNickname        = "MyDynM365Group"
     SecurityEnabled     = $true
     GroupTypes = @(
        'DynamicMembership','Unified'
     )
     MembershipRule =  '(user.userPrincipalName -contains "ourcloudnetwork.com")'
     membershipRuleProcessingState = 'On'
}

Una vez definida la configuración del grupo, simplemente podemos ejecutar New-MgGroup y definir la variable, de la siguiente manera:

New-MgGroup -BodyParameter $GroupBody

Cómo agregar propietarios y miembros del grupo

Agregar propietarios de grupos y miembros de grupos no es compatible de forma nativa con el cmdlet New-MgGroup, aunque los parámetros -member y -owner están disponibles en la versión 1 del módulo Microsoft Graph PowerShell, esto se debe a que se generaron automáticamente desde Graph API. La versión 2 del módulo Microsoft Graph PowerShell elimina estos parámetros.

Si desea agregar propietarios o miembros del grupo a su grupo con un solo comando, debe definirlos en una tabla hash con el mecanismo odata.bind. Nuevamente, usando el comando anterior como ejemplo, aquí se vería cómo agregar propietarios y miembros a nuestro grupo dentro de la tabla hash durante la creación del grupo.

$GroupBody = @{
    DisplayName = "MyDynM365Group"
     MailEnabled         = $false
     MailNickname        = "MyDynM365Group"
     SecurityEnabled     = $true
     GroupTypes = @(
        'DynamicMembership','Unified'
     )
     MembershipRule =  '(user.userPrincipalName -contains "ourcloudnetwork.com")'
     membershipRuleProcessingState = 'On'
     "[email " = @(
         "https://graph.microsoft.com/v1.0/users/[email ",
     )
     "[email " = @(
         "https://graph.microsoft.com/v1.0/users/[email ",
     )
}

New-MgGroup -BodyParameter $GroupBody

Si no desea utilizar el método anterior, deberá utilizar los cmdlets New-MgGroupMemberByRef o New-MgGroupOwnerByRef.

  • Comando: Nuevo-MgGroupMemberByRef
  • Módulo: Microsoft.Graph.Groups
  • Permisos (menos permisivos): GroupMember.ReadWrite.All
  • Comando: Nuevo-MgGroupOwnerByRef
  • Módulo: Microsoft.Graph.Groups
  • Permisos (menos permisivos): Group.ReadWrite.All

Puede utilizar el siguiente ejemplo para agregar un solo usuario a un grupo como miembro. También puede agregar una línea adicional dentro de la tabla hash $params para agregar varios usuarios a la vez.

$upn = "[email "
$Groupid = (Get-MgGroup | Where-Object {$_.DisplayName -eq "MyDynM365Group2"}).id

$params = @{
	"@odata.id" = "https://graph.microsoft.com/v1.0/users/$upn"
}

New-MgGroupMemberByRef -GroupId $GroupId -BodyParameter $params

¡Sin embargo, tenga cuidado! Si intenta agregar un miembro a un grupo usando este método con una membresía dinámica, obtendrá el siguiente error:

New-MgGroupMemberByRef_Create: privilegios insuficientes para completar la operación.

Lo cual no es muy útil ya que el error le brinda una razón falsa para el error y podría llevarlo a la trampa de intentar solucionar un problema de permisos que no existe.

Para agregar un propietario a tu grupo puedes seguir el mismo proceso, sin embargo, solo necesitas cambiar la línea final del script. No importa si la membresía de su grupo es dinámica para este comando; si recibe un error, es probable que sea cierto.

New-MgGroupOwnerByRef -GroupId $GroupId -BodyParameter $params

Artículos relacionados