Il metodo più semplice ed utilizzato dagli amministratori di sistema per l’assegnazione delle licenze è sicuramente l’interfaccia di amministrazione di Microsoft 365.
In questo breve articolo vedremo come utilizzare PowerShell per verificare ed assegnare rapidamente le licenze agli account in Microsoft 365.
Avviate PowerShell con diritti di amministratore e procedete con l’installazione del modulo MSOnline con il seguente comando:
Install-Module -Name MSOnline
Terminata l’installazione del modulo, lanciate il comando Connect-MSOnline per il collegamento ai servizi Microsoft 365 con utenza amministrativa.
Per verificare le sottoscrizioni attive, lanciate il comando:
Get-MsolAccountSku

Nel mio caso, ho a disposizione le seguenti sottoscrizioni:
AccountSkuId | Product name | ActiveUnits | ConsumedUnits |
EMSPREMIUM | ENTERPRISE MOBILITY + SECURITY E5 | 10 | 10 |
ENTERPRISEPREMIUM | Office 365 E5 | 10 | 10 |
DESKLESSPACK | OFFICE 365 F3 | 2 | 0 |
Win10_VDA_E3 | Windows 10 Enterprise E3 | 10 | 1 |
Per la tabella completa di tutte le sottoscrizioni disponibili in Microsoft 365 e relativi ID, vi invito a leggere la documentazione ufficiale:
Product names and service plan identifiers for licensing – Azure AD | Microsoft Docs
Lanciando il seguente comando è possibile verificare i servizi disponibili nella sottoscrizione interessata (Cambiate il valore in grassetto con l’AccountSkuId interessato).
Get-MsolAccountSku | Where-Object {$_.SkuPartNumber -eq “ENTERPRISEPREMIUM”} | ForEach-Object {$_.ServiceStatus}

Scenario: L’obiettivo della mia organizzazione è quello di assegnare rapidamente una licenza Windows 10 Enterprise E3 a tutti gli utenti che sono già in possesso di una licenza Office 365 E5.
AccountSkuId | Product Name |
ENTERPRISEPREMIUM | Office 365 E5 |
Win10_VDA_E3 | Windows 10 Enterprise E3 |
Comando PowerShell per export degli utenti con licenza Office 365 E5 in formato CSV:
N.B. Modificate i valori in grassetto in base alle vostre esigenze.
Get-MsolUser | Where-Object {($_.licenses).AccountSkuId -match “EnterprisePremium“} | Select UserPrinciPalName | Export-csv C:\temp\EnterprisePremium.csv -NoTypeInformation -Encoding UTF8

Script powershell per import degli utenti dal file .csv generato in precedenza ed assegnazione automatica della licenza Windows 10 Enterprise E3.
$License = Get-MsolAccountSku | Where-Object {$_.SkuPartNumber -eq “Win10_VDA_E3“}
$users = Import-Csv -Path C:\temp\EnterprisePremium.csv
foreach($user in $users){
Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -AddLicenses $License.AccountSkuId
}
Documentazione ufficiale: Assign Microsoft 365 licenses to user accounts with PowerShell – Microsoft 365 Enterprise | Microsoft Docs