Assegnare licenze di Microsoft 365 agli account utente con PowerShell
Questo articolo si applica sia a Microsoft 365 Enterprise che a Office 365 Enterprise.
Gli utenti non possono usare alcun servizio Microsoft 365 fino a quando al proprio account non viene assegnata una licenza da un piano di licenza. È possibile usare PowerShell per assegnare rapidamente le licenze agli account senza licenza.
Agli account utente deve prima essere assegnata una posizione. La specifica di una posizione è una parte obbligatoria della creazione di un nuovo account utente nel interfaccia di amministrazione di Microsoft 365.
Per impostazione predefinita, per gli account sincronizzati dal Active Directory locale Domain Services non è specificata una posizione. È possibile configurare un percorso per questi account da:
- L'interfaccia di amministrazione di Microsoft 365
- PowerShell
- Il portale di Azure (Account utente >utenti>di Active Directory>Informazioni> dicontatto>Paese o area geografica).
Nota
Informazioni su come assegnare licenze agli account utente con il interfaccia di amministrazione di Microsoft 365. Per un elenco di risorse aggiuntive, vedere Gestire utenti e gruppi.
Assegnare licenze di Microsoft 365 agli account utente con Microsoft Graph PowerShell SDK
Nota
Lo script seguente usa Microsoft Graph PowerShell. Per altre informazioni, vedere Panoramica di PowerShell di Microsoft Graph.
Per informazioni su come usare metodi diversi per l'autenticazione Connect-Graph
in uno script automatico, vedere l'articolo Cmdlet del modulo di autenticazione in Microsoft Graph PowerShell.
Prima di tutto, connettersi al tenant di Microsoft 365.
Per assegnare e rimuovere licenze per un utente è necessario l'ambito di autorizzazione User.ReadWrite.All o una delle altre autorizzazioni elencate nella pagina di riferimento "Assegna licenza" di Microsoft API Graph.
L'ambito di autorizzazione Organization.Read.All è necessario per leggere le licenze disponibili nel tenant.
Connect-MgGraph -Scopes User.ReadWrite.All, Organization.Read.All
Eseguire il Get-MgSubscribedSku
comando per visualizzare i piani di licenza disponibili e il numero di licenze disponibili in ogni piano dell'organizzazione. Il numero di licenze disponibili in ogni piano è ActiveUnits - WarningUnits - ConsumedUnits. Per altre informazioni su piani di licenza, licenze e servizi, vedere Visualizzare licenze e servizi con PowerShell.
Per trovare gli account senza licenza nell'organizzazione, eseguire questo comando.
Get-MgUser -Filter 'assignedLicenses/$count eq 0' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All
Per trovare gli utenti sincronizzati senza licenza nell'organizzazione, eseguire questo comando.
Get-MgUser -Filter 'assignedLicenses/$count eq 0 and OnPremisesSyncEnabled eq true' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All -Select UserPrincipalName
È possibile assegnare licenze solo agli account utente con la proprietà UsageLocation impostata su un codice paese ISO 3166-1 alfa-2 valido. Ad esempio, US per gli Stati Uniti e FR per la Francia. Alcuni servizi di Microsoft 365 non sono disponibili in alcuni paesi o aree geografiche. Per altre informazioni, vedere Informazioni sulle restrizioni di licenza.
Per trovare gli account che non hanno un valore UsageLocation , eseguire questo comando.
Get-MgUser -Select Id,DisplayName,Mail,UserPrincipalName,UsageLocation,UserType | where { $_.UsageLocation -eq $null -and $_.UserType -eq 'Member' }
Per impostare il valore UsageLocation in un account, eseguire questo comando.
$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"
Update-MgUser -UserId $userUPN -UsageLocation $userLoc
Ad esempio:
Update-MgUser -UserId "belindan@litwareinc.com" -UsageLocation US
Se si usa il cmdlet Get-MgUser senza usare il parametro -All , vengono restituiti solo i primi 100 account.
Assegnazione di licenze agli account utente
Per assegnare una licenza a un utente, usare il comando seguente in PowerShell.
Set-MgUserLicense -UserId $userUPN -AddLicenses @{SkuId = "<SkuId>"} -RemoveLicenses @()
In questo esempio viene assegnata una licenza dal piano di licenza SPE_E5 (Microsoft 365 E5) all'utente belindan@litwareinc.comsenza licenza:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()
Questo esempio assegna SPE_E5 (Microsoft 365 E5) ed EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5) all'utente belindan@litwareinc.com:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$e5EmsSku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'EMSPREMIUM'
$addLicenses = @(
@{SkuId = $e5Sku.SkuId},
@{SkuId = $e5EmsSku.SkuId}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
Questo esempio assegna SPE_E5 (Microsoft 365 E5) con i servizi MICROSOFTBOOKINGS (Microsoft Bookings) e LOCKBOX_ENTERPRISE (Customer Lockbox) disattivati:
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$disabledPlans = $e5Sku.ServicePlans | `
Where ServicePlanName -in ("LOCKBOX_ENTERPRISE", "MICROSOFTBOOKINGS") | `
Select -ExpandProperty ServicePlanId
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $disabledPlans
}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
Questo esempio aggiorna un utente con SPE_E5 (Microsoft 365 E5) e disattiva i piani di servizio Sway e Forms lasciando nello stato corrente i piani disabilitati esistenti dell'utente:
$userLicense = Get-MgUserLicenseDetail -UserId "belinda@litwareinc.com"
$userDisabledPlans = $userLicense.ServicePlans | `
Where ProvisioningStatus -eq "Disabled" | `
Select -ExpandProperty ServicePlanId
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$newDisabledPlans = $e5Sku.ServicePlans | `
Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | `
Select -ExpandProperty ServicePlanId
$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $disabledPlans
}
)
Set-MgUserLicense -UserId "belinda@litwareinc.com" -AddLicenses $addLicenses -RemoveLicenses @()
Questo esempio aggiorna un utente con SPE_E5 (Microsoft 365 E5) e disattiva i piani di servizio Sway e Forms lasciando i piani disabilitati esistenti dell'utente in tutte le altre sottoscrizioni nello stato corrente:
$userLicense = Get-MgUserLicenseDetail -UserId belinda@litwareinc.com
$userDisabledPlans = $userLicense.ServicePlans | Where-Object ProvisioningStatus -eq "Disabled" | Select -ExpandProperty ServicePlanId
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
$newDisabledPlans = $e5Sku.ServicePlans | Where ServicePlanName -in ("SWAY", "FORMS_PLAN_E5") | Select -ExpandProperty ServicePlanId
$disabledPlans = ($userDisabledPlans + $newDisabledPlans) | Select -Unique
$result=@()
$allPlans = $e5Sku.ServicePlans | Select -ExpandProperty ServicePlanId
foreach($disabledPlan in $disabledPlans)
{
foreach($allPlan in $allPlans)
{
if($disabledPlan -eq $allPlan)
{
$property = @{
Disabled = $disabledPlan
}
}
}
$result += New-Object psobject -Property $property
}
$finalDisabled = $result | Select-Object -ExpandProperty Disabled
$addLicenses = @(
@{
SkuId = $e5Sku.SkuId
DisabledPlans = $finalDisabled
}
)
Set-MgUserLicense -UserId belinda@litwareinc.com -AddLicenses $addLicenses -RemoveLicenses @()
Assegnare licenze a un utente copiando l'assegnazione di licenza da un altro utente
Questo esempio assegna jamesp@litwareinc.com con lo stesso piano di licenza applicato a belindan@litwareinc.com:
$mgUser = Get-MgUser -UserId "belindan@litwareinc.com" -Property AssignedLicenses
Set-MgUserLicense -UserId "jamesp@litwareinc.com" -AddLicenses $mgUser.AssignedLicenses -RemoveLicenses @()
Spostare un utente in una sottoscrizione diversa (piano di licenza)
Questo esempio aggiorna un utente dal piano di licenza SPE_E3 (Microsoft 365 E3) al piano di licenza SPE_E5 (Microsoft 365 E5):
$e3Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E3'
$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
# Unassign E3
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{} -RemoveLicenses @($e3Sku.SkuId)
# Assign E5
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()
È possibile verificare la modifica nella sottoscrizione per l'account utente con questo comando.
Get-MgUserLicenseDetail -UserId "belindan@litwareinc.com"
Vedere anche
Gestire Microsoft 365 con PowerShell
Gestire Microsoft 365 con PowerShell
Introduzione a Microsoft Graph PowerShell SDK
Usare l'utente di Microsoft Graph: assignLicense e le API subscribedSku