今天解决了一起由于Active Directory服务器时间不对导致Exchange Server 2016 Shell无法使用的故障,下面介绍一下故障情况及解决过程。在这个故障中,涉及到的服务器一共有3台计算机:一台Active Directory的服务器,一台Exchange Server 2016邮箱服务器、一台边缘传输服务器。这几台都是ESXi中的虚拟机,服务器操作系统都是Windows Server 2016 Datacenter,如图1所示。

clip_image002[4]

图1 实验拓扑

安装Exchange Server 2016的计算机是一台从模板新部署的虚拟机,加入到172.20.8的Active Directory,是一台成员服务器。在172.20.1.16安装邮箱服务,在172.20.1.12安装边缘服务器都非常顺利,没有出错。安装完成后,进入Exchange管理中心都正常。接下来是在边缘服务器导出边缘订阅文件然后在邮箱服务器导入边缘订阅文件,这一步就出了问题。

在边缘传输服务器(图1中IP地址为172.20.1.14的计算机)创建并导出边缘订阅文件之后,准备在邮箱服务器导入边缘订阅文件,在进入Exchange Shell时,出现“Exchange出现‘WinRM无法处理该请求,因为输入XML包含讲法错误’等提示”,如图2所示。

clip_image004[4]

图2 无法连接到远程服务器

因为提示中提示“WinRM无法处理该请求”,以前处理过该类故障,是WinRM IIS扩展没有安装。打开服务器管理器添加WinRM IIS扩展,如图3所示。

clip_image006[4]

图3 安装WinRM IIS扩展

但在安装了WinRM IIS扩展之后,启动Exchange Shell故障依旧。

以前我也多次安装Exchange Server,还是第一次碰到这种故障。百度搜索相关故障,看到的解决方法很多,例如有的让检查防火墙是否启用等,但我的这些虚拟机的防火墙都是开启的。还有的介绍是需要卸载重装,如果重装还需要卸载Exchange,删除注册表等操作,但我认为这是一个“小故障”,还到不了需要重新安装的程序。

在尝试了多种办法之后,在https://social.microsoft.com/Forums/zh-CN/ea04f18a-f669-46fb-97fd-47ad4828655b/exchange-shell-winrm-xml-?forum=exchangeserverzhchs帖子中看到此问题可能与虚拟机的系统时间有关。经过检查,发现当前ESXi平台中,Exchange邮箱服务器、边缘传输服务器、其他虚拟机的时间都正确,只有Active Directory服务器(IP地址为172.20.1.8)的时间不对。但调整了该虚拟机的时间之后,马上就又改回错误的时间,非常执着,无论是手动调整虚拟机的时间,还是通过NTP设置计算机的时间,该虚拟机的时间在调整为正确的时间后,稍等一会,该计算机的时间就调整为错误的时间(比当前的正确时间快14分钟,如图4所示)。

clip_image008[4]

图4 虚拟机的时间比正确时间快

经过检查,发现了故障点,ESXi的主机时间不对,受影响的只有这台Active Directory的虚拟机。检查虚拟机的配置,发现该虚拟机设置为了“同步客户机时间与主机时间”,如图5所示。

clip_image010[4]

图5 时间设置

首先修改ESXi主机时间为正确时间,然后修改虚拟机配置,取消“同步客户机时间与主机时间”,再在虚拟机中调整计算机的时间,然后重新启动邮箱服务器,再次执行Exchange Shell,此时可以正常使用,如图6所示。

clip_image012[4]

图6 Exchange Shell

Exchange Shell中执行New-EdgeSubscription -FileData ([byte[]]$(Get-Content -Path "D:\EdgeSubscription.xml" -Encoding Byte -ReadCount 0)) -Site "Default-First-Site-Name"

命令导入边缘订阅文件,如图7所示。之后可以继续Exchange的配置,这些不做介绍。

clip_image014[5]

图7 导入边缘订阅文件成功