Tilldela Microsoft 365 licenser till användarkonton med PowerShell
Denna artikel gäller för både Microsoft 365 Enterprise och Office 365 Enterprise.
Användarna kan inte använda några Microsoft 365 förrän deras konto har tilldelats en licens från en licensplan. Du kan använda PowerShell för att snabbt tilldela licenser till olicensierade konton.
Användarkonton måste först tilldelas en plats. Att ange en plats är en nödvändig del av att skapa ett nytt användarkonto i Administrationscenter för Microsoft 365.
Konton som synkroniseras från din lokala Active Directory Domain Services har inte en angiven plats som standard. Du kan konfigurera en plats för dessa konton från:
- Administrationscentret för Microsoft 365
- PowerShell
- Azure-portalen (Active > Directory-användare > användarkonto > land eller region med > > profilkontaktinformation).
Anteckning
Läs om hur du tilldelar licenser till användarkonton med Administrationscenter för Microsoft 365. En lista över ytterligare resurser finns i Hantera användare och grupper.
Använda Azure Active Directory För Graph PowerShell
Börja med att ansluta till Microsoft 365 klientorganisation.
Lista sedan licensplaner för din klientorganisation med det här kommandot.
Get-AzureADSubscribedSku | Select SkuPartNumber
Hämta sedan inloggningsnamnet för det konto som du vill lägga till en licens för, även kallat upn (user principal name).
Kontrollera sedan att användarkontot har en tilldelad användningsplats.
Get-AzureADUser -ObjectID <user sign-in name (UPN)> | Select DisplayName, UsageLocation
Om det inte finns någon tilldelad användningsplats kan du tilldela ett med följande kommandon:
$userUPN="<user sign-in name (UPN)>"
$userLoc="<ISO 3166-1 alpha-2 country code>"
Set-AzureADUser -ObjectID $userUPN -UsageLocation $userLoc
Slutligen anger du användarens inloggningsnamn och licensplansnamn och kör kommandona.
$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
Använda Microsoft Azure Active Directory för Windows PowerShell
Observera att vi börjar använda den här modulen när funktionen i den här modulen är tillgänglig i den nyare Azure Active Directory PowerShell för Graph. Vi rekommenderar kunder som skapar nya PowerShell-skript att använda den nyare modulen i stället för den här modulen.
Börja med att ansluta till Microsoft 365 klientorganisation.
Kör kommandot Get-MsolAccountSku för att visa tillgängliga licensabonnemang och antalet tillgängliga licenser i varje abonnemang i organisationen. Antalet tillgängliga licenser i varje abonnemang är ActiveUnits - WarningUnits - ConsumedUnits. Mer information om licensplaner, licenser och tjänster finns i Visa licenser och tjänster med PowerShell.
Anteckning
PowerShell Core stöder inte Microsoft Azure Active Directory-modul för Windows PowerShell-modulen och-cmdlets med MSOL i namnet. Om du vill fortsätta använda dessa cmdlets måste du köra dem från Windows PowerShell.
Kör det här kommandot för att hitta olicensierade konton i organisationen.
Get-MsolUser -All -UnlicensedUsersOnly
Du kan bara tilldela licenser till användarkonton som har egenskapen UsageLocation inställd på en giltig landskod i ISO 3166-1 alfa-2. Till exempel USA för USA och FR för Frankrike. Vissa Microsoft 365 tjänster är inte tillgängliga i vissa länder. Mer information finns i Om licensbegränsningar.
Om du vill hitta konton som inte har ett UsageLocation-värde kör du det här kommandot.
Get-MsolUser -All | where {$_.UsageLocation -eq $null}
Kör det här kommandot om du vill ange värdet Användningsbeläggning för ett konto.
Set-MsolUser -UserPrincipalName "<Account>" -UsageLocation <CountryCode>
Till exempel:
Set-MsolUser -UserPrincipalName "belindan@litwareinc.com" -UsageLocation US
Om du använder cmdleten Get-MsolUser utan att använda parametern -All returneras bara de första 500 kontona.
Tilldela licenser till användarkonton
Om du vill tilldela en licens till en användare använder du följande kommando i PowerShell.
Set-MsolUserLicense -UserPrincipalName "<Account>" -AddLicenses "<AccountSkuId>"
I det här exemplet tilldelas en licens från licensplanen litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) till den olicensierade användaren belindan @ litwareinc.com:
Set-MsolUserLicense -UserPrincipalName "belindan@litwareinc.com" -AddLicenses "litwareinc:ENTERPRISEPACK"
Kör det här kommandot om du vill tilldela en licens till alla olicensierade användare.
Get-MsolUser -All -UnlicensedUsersOnly [<FilterableAttributes>] | Set-MsolUserLicense -AddLicenses "<AccountSkuId>"
Anteckning
Du kan inte tilldela flera licenser till en användare från samma licensplan. Om du inte har tillräckligt många tillgängliga licenser tilldelas licenserna till användare i den ordning som de returneras av cmdlet:en Get-MsolUser tills de tillgängliga licenserna tar slut.
I det här exemplet tilldelas licenser från licensplanen litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) till alla olicensierade användare:
Get-MsolUser -All -UnlicensedUsersOnly | Set-MsolUserLicense -AddLicenses "litwareinc:ENTERPRISEPACK"
I det här exemplet tilldelas samma licenser till olicensierade användare i försäljningsavdelningen i USA:
Get-MsolUser -All -Department "Sales" -UsageLocation "US" -UnlicensedUsersOnly | Set-MsolUserLicense -AddLicenses "litwareinc:ENTERPRISEPACK"
Flytta en användare till en annan prenumeration (licensplan) med Azure Active Directory PowerShell för Graph prenumerationsmodul
Börja med att ansluta till Microsoft 365 klientorganisation.
Hämta sedan inloggningsnamnet för användarkontot som du vill byta prenumeration för, det vill säga användarens huvudnamn (UPN).
Lista sedan prenumerationerna (licensabonnemangen) för din klientorganisation med det här kommandot.
Get-AzureADSubscribedSku | Select SkuPartNumber
Lista sedan de prenumerationer som användarkontot för närvarande har med dessa kommandon.
$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 } } }
Identifiera prenumerationen som användaren har för närvarande (FROM-prenumerationen) och den prenumeration som användaren flyttar till (TO-prenumerationen).
Slutligen anger du TILL- och FROM-prenumerationsnamn (SKU-artikelnummer) och kör de här kommandona.
$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
$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
Du kan verifiera ändringen i prenumerationen för användarkontot med dessa kommandon.
$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 } } }
Se även
Hantera användarkonton,-licenser och-grupper med PowerShell