问题
尝试使用 Windows PowerShell 从 Microsoft 365 中删除域时,会收到以下错误消息:
Remove-MsolDomain : Unable to remove this domain. Use Get-MsolUser -DomainName<domain name> to retrieve a list of objects that are blocking removal.
At line:1 char:18
+ Remove-MsolDomain <<<< -DomainName <DomainName>
+ CategoryInfo : OperationStopped: (:) [Remove-MsolDomain], MicrosoftOnlineException
+ FullyQualifiedErrorId : Microsoft.Online.Administration.Automation.DomainNotEmptyException,Microsoft.Online.Administration.Automation.RemoveDomain
注释
自 2024 年 3 月 30 日起,Azure AD 和 MSOnline PowerShell 模块已弃用。 若要了解详细信息,请阅读弃用更新。 在此日期之后,对这些模块的支持仅限于协助迁移至 Microsoft Graph PowerShell SDK 和安全修复。 弃用的模块将持续运行至 2025 年 3 月 30 日。
我们建议迁移到 Microsoft Graph PowerShell,以便与 Microsoft Entra ID(以前称为 Azure AD)进行交互。 有关常见迁移问题,请参阅迁移常见问题解答。 注意:2024 年 6 月 30 日之后,MSOnline 版本 1.0.x 可能会遇到中断。
原因
如果满足以下一个或多个条件,则会出现此问题:
- 用户帐户或组与域相关联。
- 不会删除与所有拥有邮件许可的用户和所有启用邮件的组相关的域的代理。 Microsoft 365 会阻止删除域,直到删除与域对应的代理。
- 域使用 Skype for Business Online(前 Lync Online)会话初始协议(SIP)地址。
解决方案
使用 Microsoft 365 管理中心删除域。 Microsoft 365 中的域管理器将帮助管理员删除阻止删除域的任何依赖项,而无需使用 Windows PowerShell。
有关如何在 Microsoft 365 管理中心中删除域的详细信息,请转到 “删除域”。
使用 Windows PowerShell 排除域删除故障
注释
以下步骤要求管理员使用 Windows PowerShell。
步骤 1:检查用户名是否包含域名
注释
还可以创建用户视图,然后将域设置为要删除的域。 使用此视图可记下用户名,然后更改用户名,使用户名不包含相关域名。
若要检查用户名是否包含域名,请执行以下步骤:
- 使用适用于 Windows PowerShell 的 Azure Active Directory 模块连接到 Microsoft Entra ID。 为此,请打开适用于 Windows PowerShell 的 Microsoft Entra Modules,键入以下 cmdlet,然后按 Enter。
当系统提示时,输入您的管理员凭据。Connect-MsolService
- 运行以下 cmdlet:
例如,运行以下命令,其中 contoso.com 占位符代表要讨论的域:Get-MsolUser -DomainName [Domain] | fl UserPrincipalName
Get-MsolUser -DomainName contoso.com | fl UserPrincipalName
- 检查结果,然后更改用户主体名称(UPN),以便不再使用该域。 UPN 与用户名和用户 ID 属性相同。 可以使用 Microsoft 365 门户或 Windows PowerShell 更改 UPN。 目标是确保没有结果被返回。
步骤 2:检查电子邮件地址
注释
- 仅当订阅包含 Exchange Online 时,此步骤才适用。
- 如果运行的是 Azure Active Directory 同步工具,则可以从本地环境更新电子邮件地址。
若要检查电子邮件地址,请执行以下步骤:
通过使用远程 PowerShell 连接到 Exchange Online。 有关如何执行此操作的详细信息,请参阅 使用远程 PowerShell 连接到 Exchange Online。
查找使用您尝试删除的域的所有用户和组。 为此,请运行以下 cmdlet。 (在此 cmdlet 中,contoso.com 表示相关域)。
get-recipient | where {$_.EmailAddresses -match "contoso.com"} | fl Name, RecipientType, EmailAddresses
在输出中,记下 EmailAddresses 属性和 RecipientTypeproperty 的值。 例如,输出可能如下所示:
Name : John Smith RecipientType : UserMailbox EmailAddresses : {SIP:john@contoso.com, SMTP:john@contoso.com, smtp:john@contoso.onmicrosoft.com}
视您的情况执行以下操作之一:
如果 RecipientType 设置为 UserMailbox,则可以将 Set-Mailboxcmdlet 与 EmailAddresses 参数一起使用来更改 smtp、SMTP 和 SIP 地址。 若要了解有关此 cmdlet 的详细信息,请参阅 Set-Mailbox。
或者,可以删除用户或许可证。 但是,我们不建议这样做。
注释
如果这是最后一个管理员用户,请创建新的全局管理员,登录,然后删除问题用户。
如果 RecipientType 设置为 MailUniversalDistributionGroupor MailUniversalSecurityGroup,则可以结合使用 Set-DistributionGroup cmdlet 和 EmailAddresses 参数来更改 smtp 和 SMTP 地址。 若要了解有关此 cmdlet 的详细信息,请参阅 Set-Distribution 组。
或者,你可以删除该组。 但是,我们不建议这样做。 如果无法删除该组,请按照 在尝试删除或修改 Microsoft 365 中的通讯组时出现“权限不足”错误中的步骤操作。
如果 RecipientType 设置为 DynamicDistributionGroup,则可以将 Set-DynamicDistributionGroup cmdlet 与 EmailAddresses 参数一起使用来更改 smtp 和 SMTP 地址。 若要了解有关此 cmdlet 的详细信息,请参阅 Set-DynamicDistributionGroup。
或者,你可以删除该组。 但是,我们不建议这样做。 如果无法删除该组,请按照 在尝试删除或修改 Microsoft 365 中的通讯组时出现“权限不足”错误中的步骤操作。
详细信息
有关详细信息,请参阅 尝试从 Microsoft 365 中删除域时收到错误消息。
还需要帮助吗? 请转到 Microsoft 社区。