Přiřazení licencí Microsoft 365 k uživatelským účtům pomocí PowerShellu

Tento článek se týká Microsoft 365 Enterprise i Office 365 Enterprise.

Uživatelé nemůžou používat žádné služby Microsoftu 365, dokud jim účet nepřiřadí licenci z licenčního plánu. Pomocí PowerShellu můžete rychle přiřadit licence k nelicencovaným účtům.

Uživatelské účty musí být nejprve přiřazeny umístění. Zadání umístění je povinnou součástí vytváření nového uživatelského účtu v Centrum pro správu Microsoftu 365.

Účty synchronizované z vašeho místní Active Directory Doménové služby ve výchozím nastavení nemají zadané umístění. Umístění pro tyto účty můžete nakonfigurovat z:

  • Centrum pro správu Microsoftu 365
  • PowerShell
  • The Azure Portal (Active Directory>Users> User Account >Profile>Contact info>Country or region).

Poznámka

Naučte se přiřazovat licence k uživatelským účtům pomocí Centrum pro správu Microsoftu 365. Seznam dalších prostředků najdete v tématu Správa uživatelů a skupin.

Přiřazení licencí Microsoft 365 uživatelským účtům pomocí sady Microsoft Graph PowerShell SDK

Poznámka

Následující skript používá Microsoft Graph PowerShell. Další informace najdete v tématu Přehled Prostředí Microsoft Graph PowerShell.

Informace o použití různých metod ověřování Connect-Graph v bezobslužném skriptu najdete v článku Rutiny modulu ověřování v Prostředí Microsoft Graph PowerShell.

Nejprve se připojte ke svému tenantovi Microsoftu 365.

Přiřazení a odebrání licencí pro uživatele vyžaduje obor oprávnění User.ReadWrite.All nebo jedno z dalších oprávnění uvedených na stránce s referenčními informacemi o přiřazení licence Microsoftu Graph API.

Ke čtení licencí dostupných v tenantovi se vyžaduje obor oprávnění Organization.Read.All.

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

Spuštěním Get-MgSubscribedSku příkazu zobrazte dostupné licenční plány a počet dostupných licencí v jednotlivých plánech ve vaší organizaci. Počet dostupných licencí v každém plánu je ActiveUnits - WarningUnits - ConsumedUnits. Další informace o licenčních plánech, licencích a službách najdete v tématu Zobrazení licencí a služeb pomocí PowerShellu.

Pokud chcete najít nelicencované účty ve vaší organizaci, spusťte tento příkaz.

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

Pokud chcete najít nelicencované synchronizované uživatele ve vaší organizaci, spusťte tento příkaz.

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

Licence můžete přiřadit jenom uživatelským účtům, které mají vlastnost UsageLocation nastavenou na platný kód země ISO 3166-1 alfa-2. Například USA pro USA a FR pro Francii. Některé služby Microsoft 365 nejsou v určitých zemích nebo oblastech dostupné. Další informace najdete v tématu Informace o licenčních omezeních.

Pokud chcete najít účty, které nemají hodnotu UsageLocation , spusťte tento příkaz.

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

Pokud chcete u účtu nastavit hodnotu UsageLocation , spusťte tento příkaz.

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

Update-MgUser -UserId $userUPN -UsageLocation $userLoc

Příklady:

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

Pokud použijete rutinu Get-MgUser bez použití parametru -All , vrátí se pouze prvních 100 účtů.

Přiřazování licencí k uživatelským účtům

Pokud chcete uživateli přiřadit licenci, použijte v PowerShellu následující příkaz.

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

Tento příklad přiřadí licenci z licenčního plánu SPE_E5 (Microsoft 365 E5) uživateli belindan@litwareinc.combez licence:

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

Tento příklad přiřadí uživatelibelindan@litwareinc.comSPE_E5 (Microsoft 365 E5) a EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5):

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

Tento příklad přiřadí SPE_E5 (Microsoft 365 E5) s vypnutými službami MICROSOFTBOOKINGS (Microsoft Bookings) a LOCKBOX_ENTERPRISE (Customer Lockbox):

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

Tento příklad aktualizuje uživatele s SPE_E5 (Microsoft 365 E5) a vypne plány služby Sway a Forms, přičemž stávající zakázané plány uživatele zůstanou v aktuálním stavu:

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

Tento příklad aktualizuje uživatele pomocí SPE_E5 (Microsoft 365 E5) a vypne plány služeb Sway a Forms, přičemž stávající zakázané plány uživatele ponechá ve všech ostatních předplatných v aktuálním stavu:

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

Přiřazení licencí uživateli zkopírováním přiřazení licence od jiného uživatele

Tento příklad přiřadí jamesp@litwareinc.com se stejným licenčním plánem, který byl použit pro belindan@litwareinc.com:

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

Přesunutí uživatele do jiného předplatného (licenční plán)

Tento příklad upgraduje uživatele z licenčního plánu SPE_E3 (Microsoft 365 E3) na licenční plán 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 @()

Změnu předplatného uživatelského účtu můžete ověřit pomocí tohoto příkazu.

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

Viz také

Správa Microsoftu 365 pomocí PowerShellu

Správa Microsoftu 365 pomocí PowerShellu

Začínáme se sadou Microsoft Graph PowerShell SDK

Použití uživatele Microsoft Graphu : assignLicense a subscribedSku API