我正在按照 Microsoft 的说明( https://learn.microsoft.com/en-us/exchange/manage-hybrid-exchange-recipients-with-management-tools#permanently-shutting-down-your-last-exchange-server )查看删除环境中的最后一个 Exchange 服务器的过程。“永久关闭最后一个 Exchange 服务器”的第 5 步是删除为 OAuth 创建的服务主体凭据。它提供了一些 PowerShell 命令来确定和删除凭据:
5a. 在 Exchange 命令行管理程序中运行以下命令以获取 OAuth credValue:
$thumbprint = (Get-AuthConfig).CurrentCertificateThumbprint $oAuthCert = (dir Cert:\LocalMachine\My) | where {$_.Thumbprint -match $thumbprint} $certType = [System.Security.Cryptography.X509Certificates.X509ContentType]::Cert $certBytes = $oAuthCert.Export($certType) $credValue = [System.Convert]::ToBase64String($certBytes)
5b. 找到与上面找到的 $credValue 相同的 KeyId,使用 Microsoft Graph PowerShell 以租户管理员身份运行以下命令。
Import-Module Microsoft.Graph.Applications Connect-MgGraph -Scopes "Application.Read.All" $ServiceName = "00000002-0000-0ff1-ce00-000000000000" $p = Get-MgServicePrincipalByAppId -AppId $ServiceName $keyId = (Get-MgServicePrincipal -ServicePrincipalId $p.Id).KeyCredentials $true | ?{$_.Value -eq $credValue}).KeyId
这将给出其值与上面找到的 $credValue 匹配的密钥的 KeyId。
5c. 要删除服务主体凭据,请运行以下命令:
Import-Module Microsoft.Graph.Applications $params = @{ KeyId = $keyId } Remove-MgServicePrincipalKey -ServicePrincipalId $p.Id -BodyParameter $params
5b 中的最后一个 $keyId 赋值不是有效的 PowerShell 命令,其中有一个“$true”位置不对,并且有一个多余的结束括号。看起来命令已损坏。手动运行 Get-MgServicePrincipal 确实返回了一个 KeyCredentials 对象,但我没有看到它似乎在寻找的“Value”属性。这可能只是因为缺少部分命令。
有人知道我该如何完成这一步吗?是通过有效的 PowerShell 还是其他方法(例如 M365 门户)?另外,跳过这一步也可以吗,因为可能会留下一些垃圾?
我遇到了和你一样的问题,并找到了这个来寻找答案。查看 Wayback Machine 中的页面,有问题的部分曾经是这样的: