Site icon Gioxx.org

Licenze Microsoft 365 via Graph: License assignment cannot be done for user with invalid usage location (Aggiornato)

Licenze Microsoft 365 via Graph: License assignment cannot be done for user with invalid usage location

Sulla falsa riga di quanto già riportato nell’articolo dedicato all’applicazione di massa di licenze via PowerShell 7 e Microsoft Graph (Licenze Microsoft 365: modifica bulk via PowerShell 7 e Graph) mi sono ritrovato a dover assegnare in blocco delle licenze a nuovi utenti appena atterrati in Active Directory (quindi anche in Azure Active Directory) ma non riuscirci a causa dell’errore riportato nell’oggetto dell’articolo. Una rapida ricerca sul web mi ha portato a comprendere che senza un dettaglio (proprio in Azure Active Directory) non potevo completare l’opera perché Microsoft deve prima accertarsi della location scelta per far operare quegli account, poiché potrebbero esserci differenze di licenza in base al paese selezionato.

Photo by Jeremy Bezanger on Unsplash

Nel caso te lo fossi perso l’altra volta, ti ricordo che c’è una pagina ufficiale Microsoft che riporta i vari prodotti e i relativi SkuId: learn.microsoft.com/en-us/azure/active-directory/enterprise-users/licensing-service-plan-reference, è su questa che mi sono basato per provare ad associare ciò che mi serviva. Per correggere però il tiro e aggirare l’ostacolo ho dovuto prima operare un’altra modifica (sempre in batch) su Azure Active Directory. Servirà quindi prima di tutto caricare il giusto modulo e collegarsi:

Import-Module AzureAD -UseWindowsPowerShell
Connect-AzureAD

Fatto ciò, quello che interessa lo specifico caso è relativo alla “Usage Location“. Per ottenere quella impostata su un particolare utente basterà eseguire un:

Get-AzureADUser -ObjectId mario.rossi@contoso.com | Select UsageLocation

Avendo sbattuto il muso contro l’errore nel titolo di questo articolo mi aspettavo già che il campo Usage Location fosse vuoto, e così è stato. Ho quindi utilizzato lo stesso identico CSV che mi serviva per applicare le nuove licenze M365 per impostare prima la Usage Location (che poi è tutto spiegato anche nel documento ufficiale di Microsoft all’indirizzo learn.microsoft.com/en-us/microsoft-365/enterprise/configure-user-account-properties-with-microsoft-365-powershell):

Import-Csv "C:\temp\E3-NoSkype.csv" | % {Set-AzureADUser -ObjectId $_.mailbox -UsageLocation "IT"}

Una volta impostata la Usage Location di tutti gli utenti (il CSV a cui faccio riferimento contiene una sola colonna con intestazione “mailbox” e subito sotto gli indirizzi di posta di tutti gli utenti coinvolti nella modifica) ho potuto poi lanciare lo script di assegnazione della licenza di cui ti avevo già parlato nell’altro articolo, modificata per escludere Skype for Business.

In caso di dubbi sai già cosa fare, l’area commenti è a tua totale disposizione :-)

Aggiornato

Aggiornamento del 2/10/23
L’aggiornamento riguarda il fatto che – volendo – anche Microsoft Graph può ormai intervenire su questo dettaglio utente, rendendo il tutto più rapido e lineare soprattutto perché non si va a chiamare in causa un modulo appartenente ormai al passato. Una volta connesso a Microsoft Graph potrai semplicemente lanciare questa istruzione:

Update-MgUser -UserId $UserPrincipalName -Usagelocation "IT"

Dove $UserPrincipalName corrisponderà a quello dell’utente che intendi modificare (esempio: mario.rossi@contoso.com).

Agevolo qui di seguito un esempio pratico, uno script che – una volta connesso a Microsoft Graph – andrà a modificare la Usagelocation di un utente e gli assegnerà subito dopo una licenza Exchange Online Plan 1:

Param(
[Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true, HelpMessage="User principal name (es. mario.rossi@contoso.com)")]
[string] $UserPrincipalName
)
function priv_CheckMGGraphModule {
$mggConnected = $false
if ( (Get-Module -Name Microsoft.Graph -ListAvailable).count -gt 0 ) {
try {
Get-MgUser -ErrorAction Stop
$mggConnected = $true
} catch {
Write-Host "Please wait until I load Microsoft Graph, the operation can take a minute or more." -f "Yellow"
Import-Module Microsoft.Graph -ErrorAction SilentlyContinue
Import-Module Microsoft.Graph.Users -ErrorAction SilentlyContinue
Connect-MgGraph
$mggConnected = $true
}
} else {
Write-Host "Microsoft Graph PowerShell module is not available." -f "Yellow"
$Confirm = Read-Host "Are you sure you want to install module? [Y] Yes [N] No "
if ( $Confirm -match "[yY]" ) {
try {
Write-host "Installing Microsoft Graph PowerShell module ..."
Install-Module Microsoft.Graph -Repository PSGallery -Scope CurrentUser -AllowClobber -Force
Import-Module Microsoft.Graph -ErrorAction SilentlyContinue
Import-Module Microsoft.Graph.Users -ErrorAction SilentlyContinue
Connect-MgGraph
$mggConnected = $true
} catch {
""; Write-Host "Can't install and import Graph modules. `nPlease check logs." -f "Red"
exit
}
} else {
""; Write-Host "Microsoft Graph PowerShell module is required to run this script. `nPlease install module using Install-Module Microsoft.Graph cmdlet." -f "Red"
exit
}
}
return $mggConnected
}
$mggConnectedCheck = priv_CheckMGGraphModule
if ( $mggConnectedCheck -eq $true ) {
$P1SKU = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'EXCHANGESTANDARD'
Update-MgUser -UserId $UserPrincipalName -Usagelocation "IT"
Set-MgUserLicense -UserId $UserPrincipalName -RemoveLicenses @() -AddLicenses @{SkuId = $P1SKU.SkuId}
} else {
Write-Host "`nCan't connect or use Microsoft Graph modules. `nPlease check logs." -f "Red"
}
view raw AssignP1.ps1 hosted with ❤ by GitHub

#StaySafe


Credits:
learn.microsoft.com/en-us/powershell/module/azuread/get-azureaduser
learn.microsoft.com/en-us/microsoft-365/enterprise/configure-user-account-properties-with-microsoft-365-powershell
debajmecrm.com/how-to-resolve-license-cannot-be-assigned-to-a-user-without-a-usage-location-specified-error-when-assigning-license-to-guest-user-in-azure
tech.nicolonsky.ch/office-usage-location-azure-automation
stackoverflow.com/a/75092497/2220346

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Exit mobile version