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