为什么 Set-ClientAccessServer cmdlet 会引发 DataValidationException

为什么 Set-ClientAccessServer cmdlet 会引发 DataValidationException

我尝试执行的命令是

[PS] C:\Windows\system32>Set-ClientAccessServer -Identity CCSEMAIL2010 -AutoDiscoverServiceInternalURI https://autodiscover.local.company.net/Autodiscover/Autodiscover.xml

例外情况是

您必须为此属性提供一个值。

  • CategoryInfo:未指定:(0:Int32)[Set-ClientAccessServer],DataValidationException
  • FullyQualifiedErrorId:4DA56CC3,Microsoft.Exchange.Management.SystemConfigurationTasks.SetClientAccessServer
  • PSComputerName:ccsemail2010.local.company.net

我不明白未指定什么以及为什么错误中引用了 Int32。我已验证服务器名称与我输入的一致。我使用 adsiedit.msc 查找 AD 中的记录并验证我用于运行 cmdlet 的帐户是否有权修改它。我查看过的 cmdlet 的所有语法都只有 -Identity 属性是必需的。如果我运行

[PS] C:\Windows\system32>Set-ClientAccessServer -Identity CCSEMAIL2010

引发相同的异常。

答案1

运行时你会看到什么:

get-clientaccessserver | fl name, fqdn

LE:您还可以确保您拥有所需的权限吗?

Get-ManagementRole -Cmdlet set-clientaccessserver
Get-ManagementRoleAssignment -Role "exchange servers" -GetEffectiveUsers | fl effectiveuser*

如果您除了使用 cmdlet 的“Exchange 服务器”之外还有更多角色,那么您也应该检查这些角色。

答案2

这就是我解决问题的方法。问题的根本原因是 AD 中的损坏。一旦清除损坏,通过 powershell 发出的所有设置命令都会按预期工作。

首先我通过 powershell 列出了邮箱数据库 在此处输入图片描述

然后我打开了 Exchange 管理控制台来验证我在 powershell 中看到的内容 在此处输入图片描述

在此处输入图片描述

记下数据库的名称后,我登录到域控制器并启动 ADSIEdit 工具。我仔细查看树以查找邮箱数据库。我看到的情况有点奇怪。邮箱数据库记录比我预期的要多。 在此处输入图片描述

我进一步调查了邮箱数据库记录,发现两条数据库记录表明它们与单个服务器相关联。我从之前的研究中知道这不是预期的,也可能不正确。 在此处输入图片描述

在此处输入图片描述

我决定冒险一试,删除了通过 powershell 和 EMC 请求邮箱数据库时未列出的数据库。

问题解决了。我的所有 powershell cmdlet 现在都可以正常工作了。

相关内容