Microsoft 365-licenties toewijzen aan gebruikersaccounts met PowerShell

Dit artikel is van toepassing op Microsoft 365 Enterprise en Office 365 Enterprise.

Gebruikers kunnen geen Microsoft 365-services gebruiken totdat aan hun account een licentie van een licentieplan is toegewezen. U kunt PowerShell gebruiken om snel licenties toe te wijzen aan accounts zonder licentie.

Aan gebruikersaccounts moet eerst een locatie worden toegewezen. Het opgeven van een locatie is een vereist onderdeel van het maken van een nieuw gebruikersaccount in de Microsoft 365-beheercentrum.

Voor accounts die vanuit uw on-premises Active Directory Domeinservices zijn gesynchroniseerd, is standaard geen locatie opgegeven. U kunt een locatie voor deze accounts configureren vanuit:

  • Het Microsoft 365-beheercentrum
  • PowerShell
  • De Azure Portal (ActiveDirectory-gebruikersaccount>>>profiel>contactgegevens>Land of regio).

Opmerking

Meer informatie over het toewijzen van licenties aan gebruikersaccounts met de Microsoft 365-beheercentrum. Zie Gebruikers en groepen beheren voor een lijst met aanvullende resources.

Microsoft 365-licenties toewijzen aan gebruikersaccounts met de Microsoft Graph PowerShell SDK

Opmerking

Het volgende script maakt gebruik van Microsoft Graph Powershell. Zie Overzicht van Microsoft Graph PowerShell voor meer informatie.

Zie het artikel Cmdlets voor verificatiemodules in Microsoft Graph PowerShell voor meer informatie over het gebruik van verschillende methoden voor verificatie Connect-Graph in een script zonder toezicht.

Maak eerst verbinding met uw Microsoft 365-tenant.

Voor het toewijzen en verwijderen van licenties voor een gebruiker is het machtigingsbereik User.ReadWrite.All of een van de andere machtigingen vereist die worden vermeld op de referentiepagina 'Licentie toewijzen' van Microsoft Graph API.

Het machtigingsbereik Organization.Read.All is vereist om de licenties te lezen die beschikbaar zijn in de tenant.

Connect-MgGraph -Scopes User.ReadWrite.All, Organization.Read.All

Voer de Get-MgSubscribedSku opdracht uit om de beschikbare licentieplannen en het aantal beschikbare licenties in elk abonnement in uw organisatie weer te geven. Het aantal beschikbare licenties in elk abonnement is ActiveUnits - WarningUnits - ConsumedUnits. Zie Licenties en services weergeven met PowerShell voor meer informatie over licentieplannen, licenties en services.

Voer deze opdracht uit om de accounts zonder licentie in uw organisatie te vinden.

Get-MgUser -Filter 'assignedLicenses/$count eq 0' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All

Voer deze opdracht uit om de gesynchroniseerde gebruikers zonder licentie in uw organisatie te vinden.

Get-MgUser -Filter 'assignedLicenses/$count eq 0 and OnPremisesSyncEnabled eq true' -ConsistencyLevel eventual -CountVariable unlicensedUserCount -All -Select UserPrincipalName

U kunt alleen licenties toewijzen aan gebruikersaccounts waarvoor de eigenschap UsageLocation is ingesteld op een geldige ISO 3166-1 alpha-2-landcode. Bijvoorbeeld VS voor de Verenigde Staten en FR voor Frankrijk. Sommige Microsoft 365-services zijn niet beschikbaar in bepaalde landen/regio's. Zie Over licentiebeperkingen voor meer informatie.

Voer deze opdracht uit om accounts te vinden die geen UsageLocation-waarde hebben.

Get-MgUser -Select Id,DisplayName,Mail,UserPrincipalName,UsageLocation,UserType | where { $_.UsageLocation -eq $null -and $_.UserType -eq 'Member' }

Voer deze opdracht uit om de waarde UsageLocation voor een account in te stellen.

$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"

Update-MgUser -UserId $userUPN -UsageLocation $userLoc

Bijvoorbeeld:

Update-MgUser -UserId "belindan@litwareinc.com" -UsageLocation US

Als u de cmdlet Get-MgUser gebruikt zonder de parameter -All te gebruiken, worden alleen de eerste 100 accounts geretourneerd.

Licenties toewijzen aan gebruikersaccounts

Als u een licentie wilt toewijzen aan een gebruiker, gebruikt u de volgende opdracht in PowerShell.

Set-MgUserLicense -UserId $userUPN -AddLicenses @{SkuId = "<SkuId>"} -RemoveLicenses @()

In dit voorbeeld wordt een licentie van het SPE_E5 (Microsoft 365 E5)-licentieplan toegewezen aan de gebruiker belindan@litwareinc.comzonder licentie:

$e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
Set-MgUserLicense -UserId "belindan@litwareinc.com" -AddLicenses @{SkuId = $e5Sku.SkuId} -RemoveLicenses @()

In dit voorbeeld worden SPE_E5 (Microsoft 365 E5) en EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5) toegewezen aan de gebruikerbelindan@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 @()

In dit voorbeeld wordt SPE_E5 (Microsoft 365 E5) toegewezen waarbij de services MICROSOFTBOOKINGS (Microsoft Bookings) en LOCKBOX_ENTERPRISE (Customer Lockbox) zijn uitgeschakeld:

$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 @()

In dit voorbeeld wordt een gebruiker bijgewerkt met SPE_E5 (Microsoft 365 E5) en worden de Sway- en Forms-serviceplannen uitgeschakeld en blijven de bestaande uitgeschakelde abonnementen van de gebruiker in de huidige status:

$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 @()

In dit voorbeeld wordt een gebruiker bijgewerkt met SPE_E5 (Microsoft 365 E5) en worden de Sway- en Forms-serviceplannen uitgeschakeld, terwijl de bestaande uitgeschakelde abonnementen van de gebruiker in alle andere abonnementen de huidige status behouden:

$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 @()

Licenties toewijzen aan een gebruiker door de licentietoewijzing van een andere gebruiker te kopiƫren

In dit voorbeeld wordt jamesp@litwareinc.com toegewezen met hetzelfde licentieplan dat is toegepast op belindan@litwareinc.com:

$mgUser = Get-MgUser -UserId "belindan@litwareinc.com" -Property AssignedLicenses
Set-MgUserLicense -UserId "jamesp@litwareinc.com" -AddLicenses $mgUser.AssignedLicenses -RemoveLicenses @()

Een gebruiker verplaatsen naar een ander abonnement (licentieabonnement)

In dit voorbeeld wordt een gebruiker bijgewerkt van het SPE_E3 -licentieplan (Microsoft 365 E3) naar het 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 @()

U kunt de wijziging in het abonnement voor het gebruikersaccount controleren met deze opdracht.

Get-MgUserLicenseDetail -UserId "belindan@litwareinc.com"

Zie ook

Microsoft 365 beheren met PowerShell

Microsoft 365 beheren met PowerShell

Aan de slag met de Microsoft Graph PowerShell SDK

De Microsoft Graph-gebruiker gebruiken: assignLicense en subscribedSku-API's