為什麼 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

例外的是

您必須提供該屬性的值。

  • 類別資訊:未指定:(0:Int32) [Set-ClientAccessServer],DataValidationException
  • FullQualifiedErrorId:4DA56CC3、Microsoft.Exchange.Management.SystemConfigurationTasks.SetClientAccessServer
  • PS電腦名稱: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 Servers」之外還有更多角色,您也應該檢查這些角色。

答案2

這就是我解決問題的方法。問題的根本原因最終是AD的腐敗。一旦損壞被清除,透過 powershell 發出的所有設定命令都會按預期工作。

首先我透過 powershell 列出了郵箱資料庫 在此輸入影像描述

然後我打開 Exchange 管理主控台來驗證我在 powershell 中看到的內容 在此輸入影像描述

在此輸入影像描述

記下資料庫的名稱,然後我登入網域控制站並啟動 ADSIEdit 工具。我在樹中挖掘找到了郵箱資料庫。我所看到的有點奇怪。郵箱資料庫記錄比我預期的要多。 在此輸入影像描述

我進一步調查了郵箱資料庫記錄,找到了兩個資料庫記錄,表明它們與單一伺服器關聯。我從先前的研究中知道,這是出乎意料的,而且可能不正確。 在此輸入影像描述

在此輸入影像描述

我決定冒險並刪除了透過 powershell 和 EMC 請求郵箱資料庫時未列出的資料庫。

這解決了它。我的所有 powershell cmdlet 現在都按預期工作

相關內容