Creación de nuevas cuentas de Microsoft 365 con PowerShell
La automatización es útil
La forma más sencilla de crear una nueva cuenta de Microsoft 365 es a través del centro de administración de Microsoft 365. Microsoft ha trabajado mucho en los últimos años para mejorar la GUI y el proceso. Pero es bueno tener una alternativa, especialmente cuando existe la necesidad de aceptar aportaciones de fuentes como los sistemas de recursos humanos y crear cuentas para nuevos empleados. En la mayoría de los casos, las organizaciones utilizarán PowerShell para este tipo de automatización.
Otras técnicas de automatización también funcionan, como la combinación de SharePoint Online, Flow y Power Apps descrita en el artículo de Daler Sayfiddinov. Eso es un poco complicado para mí, así que veamos qué podemos hacer con PowerShell simple.
Hasta ahora, la mayoría de los administradores que desean automatizar la creación de cuentas de Azure AD han utilizado el módulo de Azure AD. Microsoft planea dejar de utilizar el módulo Azure AD, posiblemente a finales de 2022. Los cmdlets de Azure AD seguirán funcionando después sin el beneficio de soporte, por lo que pueden seguir utilizándose con esa salvedad.
Estos artículos brindan más información sobre el SDK de Microsoft Graph PowerShell y la transición desde el módulo de Azure AD:
Conexión al SDK de Microsoft Graph para PowerShell
Uso del SDK de Microsoft Graph para PowerShell para informar los inicios de sesión de Azure AD.
Uso de la autenticación basada en certificados con el SDK de Microsoft Graph PowerShell.
Microsoft obliga a abandonar los cmdlets de Azure AD para la administración de licencias.
Uso del SDK de Microsoft Graph para PowerShell con Azure Automation.
Creación de una nueva cuenta de Azure AD con New-AzureADUser
Todas las cuentas de Microsoft 365 comienzan como cuentas de Azure AD. Como veremos más adelante, la asignación de licencias de Microsoft 365 transforma las cuentas de Azure AD en objetos que pueden iniciar sesión y trabajar con aplicaciones de Microsoft 365. Existen dos métodos para crear una nueva cuenta de Azure AD con PowerShell. El primero es el cmdlet New-AzureADUser del módulo de Azure AD. El segundo es el cmdlet New-MgUser del SDK de Microsoft Graph PowerShell.
Las cuentas necesitan una contraseña inicial, así que creemos una para usarla en nuestra nueva cuenta. Azure AD usa perfiles de contraseña para guardar la configuración de contraseña. En este ejemplo, completamos la configuración con una contraseña y un interruptor para obligar al usuario a cambiar la contraseña después de iniciar sesión por primera vez.
$NewPassword = New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
$NewPassword.Password = "!NewPassword2022!"
$NewPassword.ForceChangePasswordNextLogin = $True
Además de su contraseña, las otras propiedades necesarias para crear una cuenta básica de Azure AD son:
- UserPrincipalName: el valor utilizado para iniciar sesión en Microsoft 365. En la mayoría de las organizaciones, si la cuenta está habilitada para correo electrónico, este valor también se usa para la dirección SMTP principal.
- DisplayName: el nombre humano que aparece en varias GUI.
- MailNickName: también conocido como alias del buzón. Esto se utilizará si la cuenta está habilitada para correo.
- AccountEnabled: configúrelo en True para activar la cuenta.
Estas propiedades se combinan para crear una cuenta básica de Azure AD. La cuenta funcionará, pero debe proporcionar valores para otras propiedades para que la cuenta sea más útil cuando las personas vean los detalles del propietario de la cuenta. En muchos casos, estas propiedades provienen del departamento de RRHH. Otros los establece TI, como la ubicación de uso. Este es un código de país ISO-3166 de dos caracteres para mostrar dónde la cuenta consume servicios y es importante establecer el valor correctamente para que la asignación de licencia funcione correctamente. A continuación se muestra un ejemplo de un comando más completo para crear una nueva cuenta:
New-AzureADUser -UserPrincipalName "Sue.Ricketts@Office365ITPros.com" -DisplayName "Sue Ricketts (Operations)" -PasswordProfile $NewPassword -AccountEnabled $True -MailNickName Sue.Ricketts -City NYC -CompanyName "Practical 365" -Country "United States" -Department "Operations" -JobTitle "GM Operations" -TelephoneNumber "+1 676 830 1101" -Mobile "+1 617 4466615" -State "New York" -StreetAddress "1, Avenue of the Americas" -Surname "Ricketts" -GivenName "Sue" -UsageLocation "US" -PhysicalDeliveryOfficeName "NYC"Si la creación de la cuenta se realiza correctamente, Azure AD devuelve el identificador de objeto único de la cuenta y confirma el nombre para mostrar y el nombre principal del usuario. El identificador único u de objeto de una cuenta es importante cuando se trabaja con PowerShell porque se utiliza para indicarle a Azure AD qué objeto desea administrar.
ObjectId DisplayName UserPrincipalName UserType
-------- ----------- ----------------- --------
3a6116ab-0116-490e-bd60-7e0cd9f36c9d Sue Ricketts (Operations) Sue.Ricketts@Office365ITPros.com Member
Cree una nueva cuenta de Azure AD con New-MgUser
A diferencia del módulo Azure AD, que hereda los permisos de la cuenta iniciada, una conexión al SDK de Microsoft Graph PowerShell establece un alcance para los permisos necesarios durante una sesión. En este caso, debido a que el cmdlet New-MgUser realiza actualizaciones de directorio, nos conectamos con un alcance de Directory.ReadWrite.All.
Connect-MgGraph -Scope Directory.ReadWrite.All
Como se indica en este artículo, la entidad de servicio utilizada por el SDK de Microsoft Graph PowerShell acumula permisos con el tiempo, por lo que es posible que la entidad de servicio ya tenga el permiso. De lo contrario, se le pedirá el consentimiento del administrador.
La creación de una nueva cuenta de Azure AD mediante el cmdlet New-MgUser del SDK de Microsoft Graph PowerShell requiere una tabla hash para almacenar la configuración de la contraseña:
$NewPassword = @{}
$NewPassword["Password"]= "!NewPassword2022!"
$NewPassword["ForceChangePasswordNextSignIn"] = $True
Algunos nombres de propiedades usados por New-MgUser difieren de los usados por New-AzureADUser. Este código crea la misma cuenta de usuario que en el ejemplo New-AzureADUser:
New-MgUser -UserPrincipalName "Sue.Ricketts@Office365ITPros.com" -DisplayName "Sue Ricketts (Operations)" -PasswordProfile $NewPassword -AccountEnabled -MailNickName Sue.Ricketts -City NYC -CompanyName "Practical 365" -Country "United States" -Department "Operations" -JobTitle "GM Operations" -BusinessPhones "+1 676 830 1101" -MobilePhone "+1 617 4466615" -State "New York" -StreetAddress "1, Avenue of the Americas" -Surname "Ricketts" -GivenName "Sue" -UsageLocation "US" -OfficeLocation "NYC"La Figura 1 muestra detalles de la nueva cuenta de Azure AD vista a través del centro de administración de Microsoft 365.
Para completar la nueva cuenta, debes agregar una foto para que aparezca en la tarjeta de perfil de usuario en aplicaciones como Teams. Mi opinión es que todas las cuentas de Microsoft 365 deberían tener fotos.
Asignar licencias con Azure AD
Nuestra cuenta de Azure AD es funcional porque el usuario puede iniciar sesión. Sin embargo, necesita una licencia para hacer cualquier cosa con Microsoft 365. El primer paso es descubrir qué licencias se pueden asignar. O mejor dicho, qué SKU de producto están disponibles. El cmdlet Get-AzureADSubscribedSKU revela la lista de productos instalados en un inquilino:
Get-AzureADSubscribedSKU | Format-Table SkuPartNumber, SkuId, ConsumedUnits
SkuId SkuPartNumber ConsumedUnits
----- ------------- -------------
1f2f344a-700d-42c9-9427-5cea1d5d7ba6 STREAM 3
b05e124f-c7cc-45a0-a6aa-8cf78c946968 EMSPREMIUM 4
6fd2c87f-b296-42f0-b197-1e91e994b900 ENTERPRISEPACK 125
f30db892-07e9-47e9-837c-80727f46fd3d FLOW_FREE 10
a403ebcc-fae0-4ca2-8c8c-7a907fd6c235 POWER_BI_STANDARD 6
26d45bd9-adf1-46cd-a9e1-51e9a5524128 ENTERPRISEPREMIUM_NOPSTNCONF 5
710779e8-3d4a-4c88-adb9-386c958d1fdf TEAMS_EXPLORATORY 2
90d8b3f8-712e-4f7b-aa1e-62e7ae6cbe96 SMB_APPS 2
8c4ce438-32a7-4ac5-91a6-e22ae08d9c8b RIGHTSMANAGEMENT_ADHOC 6
Hay disponible en línea una lista del conjunto completo de SKU e identificadores de Microsoft 365. La lista le permite resolver los nombres internos de SKU de Microsoft con el nombre del mercado. Por ejemplo, EnterprisePack significa Office 365 E3. Para asignar una licencia, creamos un objeto de licencia usando el identificador de la licencia que queremos usar y un objeto de asignación de licencia que dice que queremos agregar la licencia elegida. Finalmente, el cmdlet Set-AzureADUserLicense aplica la licencia a la cuenta mediante su identificador de objeto.
$NewLicense = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$NewLicense.SkuId = “f30db892-07e9-47e9-837c-80727f46fd3d”
$LicenseAssignment = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$LicenseAssignment.AddLicenses = $NewLicense
Set-AzureADUserLicense -ObjectId "3a6116ab-0116-490e-bd60-7e0cd9f36c9d" -AssignedLicenses $LicenseAssignment
Asignar licencias con el SDK de Microsoft Graph PowerShell
Get-MgSubscribedSku es el cmdlet que devuelve una lista de productos con el SDK de Microsoft Graph PowerShell. La misma información está disponible:
Get-MgSubscribedSku | Format-Table SkuPartNumber, SkuId, ConsumedUnits
SkuId SkuPartNumber ConsumedUnits
----- ------------- -------------
1f2f344a-700d-42c9-9427-5cea1d5d7ba6 STREAM 3
b05e124f-c7cc-45a0-a6aa-8cf78c946968 EMSPREMIUM 4
6fd2c87f-b296-42f0-b197-1e91e994b900 ENTERPRISEPACK 125
f30db892-07e9-47e9-837c-80727f46fd3d FLOW_FREE 10
a403ebcc-fae0-4ca2-8c8c-7a907fd6c235 POWER_BI_STANDARD 6
26d45bd9-adf1-46cd-a9e1-51e9a5524128 ENTERPRISEPREMIUM_NOPSTNCONF 5
710779e8-3d4a-4c88-adb9-386c958d1fdf TEAMS_EXPLORATORY 1
90d8b3f8-712e-4f7b-aa1e-62e7ae6cbe96 SMB_APPS 2
8c4ce438-32a7-4ac5-91a6-e22ae08d9c8b RIGHTSMANAGEMENT_ADHOC 6
Asignar una licencia es más sencillo con el SDK de Microsoft Graph PowerShell porque podemos pasar el identificador de SKU sin configurarlo primero.
Set-MgUserLicense -UserId "Sue.Ricketts@Office365itpros.com" -Addlicenses @{SkuId = '1f2f344a-700d-42c9-9427-5cea1d5d7ba6'} -RemoveLicenses @()
Después de asignar las licencias a la cuenta, puede verificar que estén implementadas las licencias correctas ejecutando el cmdlet Get-MgUserLicenseDetail:
Get-MgUserLicenseDetail -UserId Sue.Ricketts@office365itpros.com | Format-Table SkuId, SkuPartNumber
SkuId SkuPartNumber
----- -------------
1f2f344a-700d-42c9-9427-5cea1d5d7ba6 STREAM
710779e8-3d4a-4c88-adb9-386c958d1fdf TEAMS_EXPLORATORY
8c4ce438-32a7-4ac5-91a6-e22ae08d9c8b RIGHTSMANAGEMENT_ADHOC
f30db892-07e9-47e9-837c-80727f46fd3d FLOW_FREEEl artículo del informe de licencias de Office 365 brinda más información sobre cómo tratar con SKU, identificadores de productos, etc.
Iniciar sesión con la nueva cuenta
La verdadera prueba de nuestra cuenta recién creada y con licencia es iniciar sesión y trabajar un poco. Debido a que el perfil de contraseña utilizado al crear la cuenta estableció el requisito de cambiar la contraseña en el primer inicio de sesión, el usuario se ve obligado a actualizar su cuenta (Figura 2).
Una vez iniciada la sesión, la nueva cuenta puede acceder a cualquiera de los servicios de Microsoft 365 para los que posee una licencia. En la Figura 3, la nueva cuenta conversa en una conversación de Teams. ¡Supongo que todo funciona!
Crear nuevas cuentas de Azure AD con PowerShell no es difícil. Como muchas tareas, la preparación es clave. Conozca los detalles de los usuarios para quienes va a crear cuentas y conozca las licencias disponibles para asignar y todo debería ir bien.


