本文介绍如何解决实例之间无法互相访问AD域,或者无法同时加入AD域的问题。
问题描述
使用同一个Windows Server镜像创建几台ECS实例后,实例之间无法互相访问AD域,或者无法同时加入AD域。
问题原因
使用同一个Windows Server镜像的几台实例中,其计算机安全标识符SID(Security Identifier)相同,因此无法相互访问AD域。此时您需要修改实例的SID,再搭建域环境。
解决方案
批量创建不同SID的Windows实例
使用最新的公共镜像创建实例即可,因为最新的公共镜像已经修复此问题。
修改一台Windows实例的SID
Windows系统内置的sysprep
命令可以将已安装的Windows镜像中删除特定的系统信息,其中包括SID。本文使用PowerShell
的AutoSysprep.ps1
脚本文件,通过系统内置的sysprep
命令修改Windows实例的SID。需要注意的是,sysprep
命令会将User Profile恢复为默认值,执行sysprep
命令后会删除桌面上创建的文件。如果您希望修复故障后自动删除脚本,可以将文件放置在桌面上执行。
操作步骤
为实例的系统盘创建快照,避免数据丢失。
具体操作,请参见创建快照。
远程连接ECS实例。
具体操作,请参见通过密码或密钥认证登录Windows实例。
登录系统终端,执行
powershell
命令进入PowerShell交互模式。说明必须以管理员用户执行
powershell
命令。执行以下命令,切换至C盘根目录。
cd\
执行以下命令,查看系统的SID。
whoami /user
系统显示类似如下。
下载AutoSysprep脚本工具,并上传至实例的C盘。
进入
AutoSysprep.ps1
脚本工具所在目录,执行以下命令,查看脚本工具说明。.\AutoSysprep.ps1 -help
系统显示类似如下,具体的参数说明请参见更多信息。
执行以下命令,运行脚本。
.\AutoSysprep.ps1 -SkipRearm -Password "<$Password>" -PostAction "reboot"
说明<$Password>
为需要设置的密码。等待一段时间,再次登录实例。
说明如果您的ECS实例使用的是经典网络,需要使用管理终端连接Windows实例进行配置,在完成配置后,网络才可以连通。
执行以下命令,确认系统的SID发生改变,然后可以使用ECS实例搭建AD域环境。
whoami /user
更多信息
参数说明
AutoSysprep.ps1
脚本工具参数介绍如下所示:
-SkipRearm:保留Windows操作系统到当前授权许可状态。没有添加该参数时,AutoSysprep会恢复Windows实例到原始授权许可状态。
-Password:为实例重置密码。密码规则如下:
长度为8至30个字符,不能以斜线(/)为密码首字符。
必须同时包含大写英文字母、小写英文字母、数字和特殊符号中的三种字符,可以包含的特殊符号有:
( ) ` ~ ! @ # $ % ^ & - _ + = | { } [ ] : ; ’ < > , . ? /
-Password
参数默认值由AutoSysprep随机生成。
说明如果您忘记设置密码,修改系统SID后可以在ECS管理控制台重置密码。
-Hostname:为实例重置主机名。主机名限制如下:
主机名字符长度为2到15,不支持点号(.),不能全是数字。
允许大小写英文字母、数字和短横线(-)。
点号(.)和短横线(-)不能作为首尾字符,更不能连续使用。
-Hostname
参数默认值由AutoSysprep随机生成。
-PostAction:运行脚本后的后续操作。选项介绍如下:
shutdown:默认选项,修改实例SID后停止实例。
reboot:修改实例SID后重启实例。
quit:修改实例SID后停留在实例内部。
-help:查看脚本工具的介绍,自定义的使用AutoSysprep.ps1的参数。
Windows Server 2008系统查看脚本说明时报错
问题现象
执行以下命令,查看脚本说明。
.\AutoSysprep.ps1 -help
系统显示类似如下。
解决方法
执行以下命令,增加权限。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Windows Server 2008系统运行脚本时提示未进行数字签名
问题现象
执行以下命令,运行脚本。
.\AutoSysprep.ps1 -skiprearm -postaction "reboot"
系统显示类似如下。
解决方法
执行以下命令,运行脚本。
powershell -executionpolicy bypass -file c:\AutoSysprep.ps1 -skiprearm -postaction "reboot"
如果没有特定要求,AutoSysprep会随机生成密码和主机名。