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ändare kan inte använda några Microsoft 365-tjänster förrän deras konto har tilldelats en licens från en licensieringsplan. 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 obligatorisk del av att skapa ett nytt användarkonto i Administrationscenter för Microsoft 365.

Konton som synkroniseras från din lokal Active Directory Domain Services har som standard inte någon angiven plats. Du kan konfigurera en plats för dessa konton från:

  • Administrationscentret för Microsoft 365
  • PowerShell
  • Azure Portal (Active Directory-användare>>användarkontoprofil>>Kontaktinformation>Land eller region).

Obs!

Lär dig 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.

Tilldela Microsoft 365-licenser till användarkonton med Microsoft Graph PowerShell SDK

Obs!

Följande skript använder Microsoft Graph Powershell. Mer information finns i Översikt över Microsoft Graph PowerShell.

Information om hur du använder olika metoder för att autentisera Connect-Graph i ett obevakat skript finns i artikeln cmdletar för autentiseringsmoduler i Microsoft Graph PowerShell.

Anslut först till din Microsoft 365-klientorganisation.

Tilldelning och borttagning av licenser för en användare kräver behörighetsomfånget User.ReadWrite.All eller någon av de andra behörigheterna som anges på Microsoft Graph API-referenssidan Tilldela licens.

Behörighetsomfånget Organization.Read.All krävs för att läsa de licenser som är tillgängliga i klientorganisationen.

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

Get-MgSubscribedSku Kör kommandot för att visa tillgängliga licensplaner och antalet tillgängliga licenser i varje plan i din organisation. Antalet tillgängliga licenser i varje plan är ActiveUnits - WarningUnits - ConsumedUnits. Mer information om licensieringsplaner, licenser och tjänster finns i Visa licenser och tjänster med PowerShell.

Kör det här kommandot för att hitta de olicensierade kontona i din organisation.

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

Kör det här kommandot för att hitta de olicensierade synkroniserade användarna i din organisation.

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

Du kan bara tilldela licenser till användarkonton som har egenskapen UsageLocation inställd på en giltig ISO 3166-1 alfa-2-landskod. Till exempel USA för USA och FRANKRIKE. Vissa Microsoft 365-tjänster är inte tillgängliga i vissa länder/regioner. Mer information finns i Om licensbegränsningar.

Kör det här kommandot för att hitta konton som inte har något UsageLocation-värde .

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

Kör det här kommandot för att ange värdet UsageLocation för ett konto.

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

Update-MgUser -UserId $userUPN -UsageLocation $userLoc

Till exempel:

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

Om du använder cmdleten Get-MgUser utan att använda parametern -All returneras endast de första 100 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-MgUserLicense -UserId $userUPN -AddLicenses @{SkuId = "<SkuId>"} -RemoveLicenses @()

Det här exemplet tilldelar en licens från licensieringsplanen SPE_E5 (Microsoft 365 E5) till den olicensierade användaren belindan@litwareinc.com:

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

I det här exemplet tilldelas användaren SPE_E5 (Microsoft 365 E5) och EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5):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 @()

I det här exemplet tilldelas SPE_E5 (Microsoft 365 E5) med tjänsterna MICROSOFTBOOKINGS (Microsoft Bookings) och LOCKBOX_ENTERPRISE (Customer Lockbox) inaktiverade:

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

Det här exemplet uppdaterar en användare med SPE_E5 (Microsoft 365 E5) och inaktiverar tjänstplaner för Sway och formulär samtidigt som användarens befintliga inaktiverade planer lämnas i sitt aktuella tillstånd:

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

Det här exemplet uppdaterar en användare med SPE_E5 (Microsoft 365 E5) och inaktiverar tjänstplaner för Sway och formulär samtidigt som användarens befintliga inaktiverade planer i alla andra prenumerationer lämnas i sitt aktuella tillstånd:

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

Tilldela licenser till en användare genom att kopiera licenstilldelningen från en annan användare

Det här exemplet tilldelar jamesp@litwareinc.com samma licensieringsplan som har tillämpats på belindan@litwareinc.com:

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

Flytta en användare till en annan prenumeration (licensplan)

Det här exemplet uppgraderar en användare från licensieringsplanen för SPE_E3 (Microsoft 365 E3) till licensieringsplanen för 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 @()

Du kan verifiera ändringen i prenumerationen för användarkontot med det här kommandot.

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

Se även

Hantera Microsoft 365 med PowerShell

Hantera Microsoft 365 med PowerShell

Kom igång med Microsoft Graph PowerShell SDK

Använd Microsoft Graph-användaren: assignLicense - och subscribedSku-API :er