使用 PowerShell 从用户帐户中删除 Microsoft 365 许可证

此文章适用于 Microsoft 365 企业版和 Office 365 企业版。

使用 Microsoft Graph PowerShell SDK

首先, 连接到 Microsoft 365 租户

为用户分配和删除许可证需要 User.ReadWrite.All 权限范围或“分配许可证”图形 API参考页中列出的其他权限之一。

读取租户中可用的许可证需要 Organization.Read.All 权限范围。

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

若要查看组织中的许可计划信息,请参阅以下文章:

从用户帐户中删除许可证

要从现有的用户帐户中删除许可证,请使用以下语法:

Set-MgUserLicense -UserId "<Account>" -RemoveLicenses @("<AccountSkuId1>") -AddLicenses @{}

此示例从用户 BelindaN@litwareinc.com中删除SPE_E5 (Microsoft 365 E5) 许可计划:

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

若要从一组现有许可用户中删除所有许可证,请使用以下语法:

$licensedUsers = Get-MgUser -Filter 'assignedLicenses/$count ne 0' `
    -ConsistencyLevel eventual -CountVariable licensedUserCount -All `
    -Select UserPrincipalName,DisplayName,AssignedLicenses

foreach($user in $licensedUsers)
{
    $licensesToRemove = $user.AssignedLicenses | Select -ExpandProperty SkuId
    $user = Set-MgUserLicense -UserId $user.UserPrincipalName -RemoveLicenses $licensesToRemove -AddLicenses @{} 
}

若要从文本文件中的用户列表中删除特定许可证,请执行以下步骤。 此示例从文本文件 C\My Documents\Accounts.txt 中定义的用户帐户中删除 SPE_E5 (Microsoft 365 企业版 E5) 许可证。

  1. 创建文本文件并将其保存到 C:\My Documents\Accounts.txt,每行包含一个帐户,如下所示:

    akol@contoso.com
    tjohnston@contoso.com
    kakers@contoso.com
    
  2. 使用以下命令:

    $x=Get-Content "C:\My Documents\Accounts.txt"
    $e5Sku = Get-MgSubscribedSku -All | Where SkuPartNumber -eq 'SPE_E5'
    for ($i=0; $i -lt $x.Count; $i++)
    {
    Set-MgUserLicense -UserId $x[$i] -RemoveLicenses @($e5Sku.SkuId) -AddLicenses @{}
    }
    

释放许可证的另一种方法是删除用户帐户。 有关详细信息,请参阅 使用 PowerShell 删除和还原用户帐户

另请参阅

使用 PowerShell 管理 Microsoft 365 用户帐户、许可证和组

使用 PowerShell 管理 Microsoft 365

PowerShell for Microsoft 365 入门