Przypisywanie licencji platformy Microsoft 365 do kont użytkowników przy użyciu programu PowerShell

Ten artykuł dotyczy zarówno Microsoft 365 Enterprise, jak i Office 365 Enterprise.

Użytkownicy nie mogą korzystać z żadnych usług platformy Microsoft 365, dopóki ich konto nie zostanie przypisane do licencji z planu licencjonowania. Program PowerShell umożliwia szybkie przypisywanie licencji do nielicencjonowanych kont.

Konta użytkowników muszą najpierw mieć przypisaną lokalizację. Określanie lokalizacji jest wymaganą częścią tworzenia nowego konta użytkownika w Centrum administracyjne platformy Microsoft 365.

Konta zsynchronizowane z lokalna usługa Active Directory Domain Services domyślnie nie mają określonej lokalizacji. Lokalizację dla tych kont można skonfigurować z następujących elementów:

  • Centrum administracyjne platformy Microsoft 365
  • PowerShell
  • Azure Portal (Informacjekontaktowe> profilu użytkownikaużytkowników>usługi>> Active Directory> — kraj lub region).

Uwaga

Dowiedz się, jak przypisywać licencje do kont użytkowników przy użyciu Centrum administracyjne platformy Microsoft 365. Aby uzyskać listę dodatkowych zasobów, zobacz Zarządzanie użytkownikami i grupami.

Przypisywanie licencji platformy Microsoft 365 do kont użytkowników przy użyciu zestawu Microsoft Graph PowerShell SDK

Uwaga

Poniższy skrypt używa programu Microsoft Graph PowerShell. Aby uzyskać więcej informacji, zobacz Omówienie programu PowerShell programu Microsoft Graph.

Aby uzyskać informacje o sposobie używania różnych metod do uwierzytelniania Connect-Graph w skryptze nienadzorowanym, zobacz artykuł Polecenia cmdlet modułu uwierzytelniania w programie Microsoft Graph PowerShell.

Najpierw połącz się z dzierżawą platformy Microsoft 365.

Przypisywanie i usuwanie licencji dla użytkownika wymaga zakresu uprawnień User.ReadWrite.All lub jednego z innych uprawnień wymienionych na stronie referencyjnej "Przypisywanie licencji" firmy Microsoft interfejs Graph API.

Zakres uprawnień Organization.Read.All jest wymagany do odczytu licencji dostępnych w dzierżawie.

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

Uruchom polecenie , Get-MgSubscribedSku aby wyświetlić dostępne plany licencjonowania i liczbę dostępnych licencji w każdym planie w organizacji. Liczba dostępnych licencji w każdym planie to ActiveUnits - WarningUnits - ConsumedUnits. Aby uzyskać więcej informacji na temat planów licencjonowania, licencji i usług, zobacz Wyświetlanie licencji i usług za pomocą programu PowerShell.

Aby znaleźć nielicencjonowane konta w organizacji, uruchom to polecenie.

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

Aby znaleźć nielicencjonowanych zsynchronizowanych użytkowników w organizacji, uruchom to polecenie.

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

Licencje można przypisywać tylko do kont użytkowników, które mają właściwość UsageLocation ustawioną na prawidłowy kod kraju ISO 3166-1 alfa-2. Na przykład stany USA dla Stany Zjednoczone i FR dla Francji. Niektóre usługi platformy Microsoft 365 nie są dostępne w niektórych krajach/regionach. Aby uzyskać więcej informacji, zobacz About license restrictions (Informacje o ograniczeniach licencji).

Aby znaleźć konta, które nie mają wartości UsageLocation , uruchom to polecenie.

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

Aby ustawić wartość UsageLocation na koncie, uruchom to polecenie.

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

Update-MgUser -UserId $userUPN -UsageLocation $userLoc

Przykład:

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

Jeśli używasz polecenia cmdlet Get-MgUser bez użycia parametru -All , zwracanych jest tylko pierwsze 100 kont.

Przypisywanie licencji do kont użytkowników

Aby przypisać licencję do użytkownika, użyj następującego polecenia w programie PowerShell.

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

W tym przykładzie przypisano licencję z planu licencjonowania SPE_E5 (Microsoft 365 E5) do nielicencjonowanego użytkownikabelindan@litwareinc.com:

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

W tym przykładzie do użytkownika belindan@litwareinc.comsą przypisywane SPE_E5 (Microsoft 365 E5) i 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 @()

W tym przykładzie przypisano SPE_E5 (Microsoft 365 E5) z wyłączonymi usługami MICROSOFTBOOKINGS (Microsoft Bookings) i 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 @()

W tym przykładzie użytkownik jest aktualizowany przy użyciu SPE_E5 (Microsoft 365 E5) i wyłącza plany usług Sway i Forms, pozostawiając istniejące wyłączone plany użytkownika w bieżącym stanie:

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

W tym przykładzie użytkownik jest aktualizowany przy użyciu SPE_E5 (Microsoft 365 E5) i wyłącza plany usług Sway i Forms, pozostawiając istniejące wyłączone plany użytkownika we wszystkich innych subskrypcjach w bieżącym stanie:

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

Przypisywanie licencji do użytkownika przez skopiowanie przypisania licencji od innego użytkownika

W tym przykładzie przypisano jamesp@litwareinc.com ten sam plan licencjonowania, który został zastosowany do belindan@litwareinc.comprogramu :

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

Przenoszenie użytkownika do innej subskrypcji (plan licencji)

W tym przykładzie uaktualnia użytkownika z planu licencjonowania SPE_E3 (Microsoft 365 E3) do planu licencjonowania 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 @()

Możesz zweryfikować zmianę subskrypcji dla konta użytkownika za pomocą tego polecenia.

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

Zobacz też

Zarządzanie platformą Microsoft 365 za pomocą programu PowerShell

Zarządzanie platformą Microsoft 365 za pomocą programu PowerShell

Wprowadzenie do zestawu Microsoft Graph PowerShell SDK

Użyj użytkownika programu Microsoft Graph : assignLicense i subscribedSku API