Licenties Microsoft 365 gebruikersaccounts toewijzen met PowerShell

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

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

Gebruikersaccounts moeten eerst een locatie worden toegewezen. Het opgeven van een locatie is een verplicht onderdeel van het maken van een nieuw gebruikersaccount in het Microsoft 365 beheercentrum.

Accounts die zijn gesynchroniseerd met uw on-premises Active Directory Domain Services, hebben standaard geen locatie opgegeven. U kunt een locatie voor deze accounts configureren via:

  • Het Microsoft 365-beheercentrum
  • PowerShell
  • De Azure-portal (Active > Directory-gebruikers > gebruikersaccount > > Profielgegevens > land of regio).

Notitie

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

De powershell Azure Active Directory powershell gebruiken voor Graph module

Maak eerst verbinding met uw Microsoft 365 tenant.

Vermeld vervolgens de licentieplannen voor uw tenant met deze opdracht.

Get-AzureADSubscribedSku | Select SkuPartNumber

Vervolgens krijgt u de aanmeldingsnaam van het account waaraan u een licentie wilt toevoegen, ook wel de gebruikersnaam (UPN) genoemd.

Controleer vervolgens of aan het gebruikersaccount een gebruikslocatie is toegewezen.

Get-AzureADUser -ObjectID <user sign-in name (UPN)> | Select DisplayName, UsageLocation

Als er geen gebruikslocatie is toegewezen, kunt u er een toewijzen met deze opdrachten:

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

Geef ten slotte de naam van de aanmeldings- en licentieplannaam van de gebruiker op en voer deze opdrachten uit.

$userUPN="<user sign-in name (UPN)>"
$planName="<license plan name from the list of license plans>"
$License = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$License.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $planName -EQ).SkuID
$LicensesToAssign = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$LicensesToAssign.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $LicensesToAssign

Gebruik de Microsoft Azure Active Directory module voor Windows PowerShell

Houd er rekening mee dat deze module wordt afgeschaft wanneer de functionaliteit van deze module beschikbaar is in de nieuwere Azure Active Directory PowerShell voor Graph module. We raden klanten die nieuwe PowerShell-scripts maken aan om de nieuwere module te gebruiken in plaats van deze module.

Maak eerst verbinding met uw Microsoft 365 tenant.

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

Notitie

PowerShell Core biedt geen ondersteuning voor de Microsoft Azure Active Directory-module voor Windows PowerShell-module en cmdlets met Msol in hun naam. Als u deze cmdlets wilt blijven gebruiken, moet u deze uitvoeren vanuit Windows PowerShell.

Als u de accounts zonder een vergunning in uw organisatie wilt zoeken, kunt u deze opdracht uitvoeren.

Get-MsolUser -All -UnlicensedUsersOnly

U kunt alleen licenties toewijzen aan gebruikersaccounts die de eigenschap UsageLocation hebben ingesteld op een geldige ISO 3166-1 alfa-2-landcode. Bijvoorbeeld VS voor de Verenigde Staten en FR voor Frankrijk. Sommige Microsoft 365 zijn niet beschikbaar in bepaalde landen. Zie Over licentiebeperkingen voor meer informatie.

Als u accounts wilt zoeken die geen UsageLocation-waarde hebben, kunt u deze opdracht uitvoeren.

Get-MsolUser -All | where {$_.UsageLocation -eq $null}

Voer deze opdracht uit als u de waarde UsageLocation voor een account wilt instellen.

Set-MsolUser -UserPrincipalName "<Account>" -UsageLocation <CountryCode>

Bijvoorbeeld:

Set-MsolUser -UserPrincipalName "belindan@litwareinc.com" -UsageLocation US

Als u de get-MsolUser-cmdlet gebruikt zonder de parameter -All te gebruiken, worden alleen de eerste 500 accounts geretourneerd.

Licenties toewijzen aan gebruikersaccounts

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

Set-MsolUserLicense -UserPrincipalName "<Account>" -AddLicenses "<AccountSkuId>"

In dit voorbeeld wordt een licentie van het licentieplan litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) toegewezen aan de gebruiker zonder licentie litwareinc.com: @

Set-MsolUserLicense -UserPrincipalName "belindan@litwareinc.com" -AddLicenses "litwareinc:ENTERPRISEPACK"

Voer deze opdracht uit als u een licentie wilt toewijzen aan alle gebruikers zonder licentie.

Get-MsolUser -All -UnlicensedUsersOnly [<FilterableAttributes>] | Set-MsolUserLicense -AddLicenses "<AccountSkuId>"

Notitie

U kunt niet meerdere licenties toewijzen aan een gebruiker via hetzelfde licentieplan. Als u niet voldoende beschikbare licenties hebt, worden de licenties toegewezen aan gebruikers in de volgorde dat ze worden geretourneerd door de cmdlet Get-MsolUser totdat de beschikbare licenties zijn op.

In dit voorbeeld worden licenties van het licentieplan litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) toegewezen aan alle gebruikers zonder licentie:

Get-MsolUser -All -UnlicensedUsersOnly | Set-MsolUserLicense -AddLicenses "litwareinc:ENTERPRISEPACK"

In dit voorbeeld worden dezelfde licenties toegewezen aan gebruikers zonder licentie op de afdeling Verkoop in de Verenigde Staten:

Get-MsolUser -All -Department "Sales" -UsageLocation "US" -UnlicensedUsersOnly | Set-MsolUserLicense -AddLicenses "litwareinc:ENTERPRISEPACK"

Een gebruiker verplaatsen naar een ander abonnement (licentieplan) met de Azure Active Directory PowerShell voor Graph module

Maak eerst verbinding met uw Microsoft 365 tenant.

Vervolgens krijgt u de aanmeldingsnaam van het gebruikersaccount waarvoor u van abonnement wilt veranderen, ook wel de gebruikersnaam (UPN) genoemd.

Vermeld vervolgens de abonnementen (licentieplannen) voor uw tenant met deze opdracht.

Get-AzureADSubscribedSku | Select SkuPartNumber

Vermeld vervolgens de abonnementen die het gebruikersaccount momenteel heeft met deze opdrachten.

$userUPN="<user account UPN>"
$licensePlanList = Get-AzureADSubscribedSku
$userList = Get-AzureADUser -ObjectID $userUPN | Select -ExpandProperty AssignedLicenses | Select SkuID 
$userList | ForEach { $sku=$_.SkuId ; $licensePlanList | ForEach { If ( $sku -eq $_.ObjectId.substring($_.ObjectId.length - 36, 36) ) { Write-Host $_.SkuPartNumber } } }

Bepaal het abonnement dat de gebruiker momenteel heeft (het FROM-abonnement) en het abonnement dat de gebruiker verplaatst (het TO-abonnement).

Geef ten slotte de namen van het TO- en FROM-abonnement (SKU-onderdeelnummers) op en voer deze opdrachten uit.

$subscriptionFrom="<SKU part number of the current subscription>"
$subscriptionTo="<SKU part number of the new subscription>"
# Unassign
$license = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicense
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$license.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $subscriptionFrom -EQ).SkuID
$licenses.AddLicenses = $license
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
$licenses.AddLicenses = @()
$licenses.RemoveLicenses =  (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $subscriptionFrom -EQ).SkuID
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses
# Assign
$license.SkuId = (Get-AzureADSubscribedSku | Where-Object -Property SkuPartNumber -Value $subscriptionTo -EQ).SkuID
$licenses = New-Object -TypeName Microsoft.Open.AzureAD.Model.AssignedLicenses
$licenses.AddLicenses = $License
Set-AzureADUserLicense -ObjectId $userUPN -AssignedLicenses $licenses

Met deze opdrachten kunt u de wijziging van het abonnement voor het gebruikersaccount verifiëren.

$licensePlanList = Get-AzureADSubscribedSku
$userList = Get-AzureADUser -ObjectID $userUPN | Select -ExpandProperty AssignedLicenses | Select SkuID 
$userList | ForEach { $sku=$_.SkuId ; $licensePlanList | ForEach { If ( $sku -eq $_.ObjectId.substring($_.ObjectId.length - 36, 36) ) { Write-Host $_.SkuPartNumber } } }

Zie ook

Gebruikersaccounts, -licenties en -groepen beheren met PowerShell

Microsoft 365 beheren met PowerShell

Aan de slag met PowerShell voor Microsoft 365