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

Tento článek platí pro Microsoft 365 Enterprise i Office 365 Enterprise.

Uživatelé nemůžou používat žádné služby Microsoftu 365, dokud jim nebude přiřazena licence 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 k umístění. Zadání umístění je povinnou součástí vytváření nového uživatelského účtu v Centru pro správu Microsoftu 365.

Účty synchronizované z místní služby Active Directory Domain Services nemají ve výchozím nastavení zadané umístění. Umístění pro tyto účty můžete nakonfigurovat z těchto umístění:

  • Centrum pro správu Microsoftu 365
  • PowerShell
  • Azure Portal (uživatelé služby Active Directory > > uživatelský účet > Profil > Kontaktní informace > Země nebo oblast).

Poznámka

Zjistěte, jak přiřadit licence uživatelským účtům pomocí Centra pro správu Microsoftu 365. Seznam dalších prostředků najdete v tématu Správa uživatelů a skupin.

Použití sady Microsoft Graph PowerShell SDK

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 referenční stránce rozhraní Graph API Pro přiřazení licence.

Rozsah oprávnění Organization.Read.All je nutný ke čtení licencí dostupných v tenantovi.

Connect-Graph -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 jednotlivých plánech 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

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 Spojené státy a FR pro Francii. Některé služby Microsoftu 365 nejsou v některých zemích dostupné. Další informace najdete v tématu 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říklad:

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řazení licencí uživatelským účtům

Pokud chcete přiřadit licenci uživateli, 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) nelicencovanému uživateli belindan@litwareinc.com:

$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í SPE_E5 (Microsoft 365 E5) a EMSPREMIUM (ENTERPRISE MOBILITY + SECURITY E5) uživateli 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 @()

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

$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 pomocí SPE_E5 (Microsoft 365 E5) a vypne plány služby Sway a Forms a ponechá stávající zakázané plány uživatele v aktuálním stavu:

$userLicense = Get-MgUserLicenseDetail -UserId "belinda@fdoau.onmicrosoft.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.onmicrosoft.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"
Set-MgUserLicense -UserId "jamesp@litwareinc.com" -AddLicenses $mgUser.AssignedLicenses -RemoveLicenses @()

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

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 pro uživatelský účet můžete ověřit pomocí tohoto příkazu.

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

Použití modulu Azure Active Directory PowerShell pro Graph

Poznámka

Naplánované vyřazení rutiny Set-AzureADUserLicense Proveďte migraci skriptů do rutiny Set-MgUserLicense sady Microsoft Graph SDK, jak je popsáno výše. Další informace najdete v tématu Migrace aplikací pro přístup k rozhraním API pro správu licencí z Microsoft Graphu.

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

V dalším kroku pomocí tohoto příkazu zobrazte seznam licenčních plánů pro vašeho tenanta.

Get-AzureADSubscribedSku | Select SkuPartNumber

Dále získejte přihlašovací název účtu, ke kterému chcete přidat licenci, označovanou také jako hlavní název uživatele (UPN).

Dále se ujistěte, že má uživatelský účet přiřazené umístění využití.

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

Pokud není přiřazené žádné umístění použití, můžete ho přiřadit pomocí těchto příkazů:

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

Nakonec zadejte přihlašovací jméno uživatele a název licenčního plánu a spusťte tyto příkazy.

$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

Použití modulu Microsoft Azure Active Directory pro Windows PowerShell

Poznámka

Rutiny Set-MsolUserLicense a New-MsolUser (-LicenseAssignment) jsou naplánované na vyřazení. Proveďte migraci skriptů do rutiny Set-MgUserLicense sady Microsoft Graph SDK, jak je popsáno výše. Další informace najdete v tématu Migrace aplikací pro přístup k rozhraním API pro správu licencí z Microsoft Graphu.

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

Spuštěním Get-MsolAccountSku 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 jednotlivých plánech 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.

Poznámka

PowerShell Core nepodporuje modul Microsoft Azure Active Directory pro modul Windows PowerShell a rutiny s názvem Msol . Pokud chcete tyto rutiny dál používat, musíte je spustit z Windows PowerShellu.

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

Get-MsolUser -All -UnlicensedUsersOnly

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 Spojené státy a FR pro Francii. Některé služby Microsoftu 365 nejsou v některých zemích dostupné. Další informace najdete v tématu O licenčních omezeních.

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

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

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

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

Příklad:

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

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

Přiřazení licencí uživatelským účtům

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

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

Tento příklad přiřadí licenci z licenčního plánu litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) nelicencovanému uživateli belindan@litwareinc.com:

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

Pokud chcete přiřadit licenci všem nelicencovaným uživatelům, spusťte tento příkaz.

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

Poznámka

Ze stejného licenčního plánu nemůžete uživateli přiřadit více licencí. Pokud nemáte dostatek dostupných licencí, přiřadí se licence uživatelům v pořadí, v jakém je vrátí rutina Get-MsolUser , dokud nebudou dostupné licence vyčerpány.

Tento příklad přiřadí licence z licenčního plánu litwareinc:ENTERPRISEPACK (Office 365 Enterprise E3) všem nelicencovaným uživatelům:

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

Tento příklad přiřadí stejné licence nelicencovaným uživatelům v prodejním oddělení ve Spojených státech:

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

Přesun uživatele do jiného předplatného (licenčního plánu) pomocí modulu Azure Active Directory PowerShell pro Graph

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

Dále získejte přihlašovací jméno uživatelského účtu, pro který chcete přepnout předplatná, označované také jako hlavní název uživatele (UPN).

V dalším kroku pomocí tohoto příkazu zobrazte seznam předplatných (licenčních plánů) pro vašeho tenanta.

Get-AzureADSubscribedSku | Select SkuPartNumber

Dále pomocí těchto příkazů vypište předplatná, která má uživatelský účet aktuálně.

$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 } } }

Určete předplatné, které uživatel aktuálně má (předplatné FROM) a předplatné, do kterého se uživatel přesouvá (předplatné TO).

Nakonec zadejte názvy předplatného TO a FROM (čísla částí skladové položky) a spusťte tyto příkazy.

$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

Změnu předplatného pro uživatelský účet můžete ověřit pomocí těchto příkazů.

$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 } } }

Viz také

Správa uživatelských účtů, licencí a skupin pomocí PowerShellu

Správa Microsoftu 365 pomocí PowerShellu

Začínáme s PowerShellem pro Microsoft 365