实例之间无法互相访问AD域或同时加入AD域怎么办?

本文介绍如何解决实例之间无法互相访问AD域,或者无法同时加入AD域的问题。

问题描述

使用同一个Windows Server镜像创建几台ECS实例后,实例之间无法互相访问AD域,或者无法同时加入AD域。

问题原因

使用同一个Windows Server镜像的几台实例中,其计算机安全标识符SID(Security Identifier)相同,因此无法相互访问AD域。此时您需要修改实例的SID,再搭建域环境。

解决方案

批量创建不同SID的Windows实例

使用最新的公共镜像创建实例即可,因为最新的公共镜像已经修复此问题。

修改一台Windows实例的SID

Windows系统内置的sysprep命令可以将已安装的Windows镜像中删除特定的系统信息,其中包括SID。本文使用PowerShellAutoSysprep.ps1脚本文件,通过系统内置的sysprep命令修改Windows实例的SID。需要注意的是,sysprep命令会将User Profile恢复为默认值,执行sysprep命令后会删除桌面上创建的文件。如果您希望修复故障后自动删除脚本,可以将文件放置在桌面上执行。

操作步骤

  1. 为实例的系统盘创建快照,避免数据丢失。

    具体操作,请参见创建快照

  2. 远程连接ECS实例。

    具体操作,请参见通过密码或密钥认证登录Windows实例

  3. 登录系统终端,执行powershell命令进入PowerShell交互模式。

    说明

    必须以管理员用户执行powershell命令。

  4. 执行以下命令,切换至C盘根目录。

    cd\
  5. 执行以下命令,查看系统的SID。

    whoami /user

    系统显示类似如下。

  6. 下载AutoSysprep脚本工具,并上传至实例的C盘。

  7. 进入AutoSysprep.ps1脚本工具所在目录,执行以下命令,查看脚本工具说明。

    .\AutoSysprep.ps1 -help

    系统显示类似如下,具体的参数说明请参见更多信息

  8. 执行以下命令,运行脚本。

     .\AutoSysprep.ps1 -SkipRearm -Password "<$Password>" -PostAction "reboot"
    说明

    <$Password>为需要设置的密码。

  9. 等待一段时间,再次登录实例。

    说明

    如果您的ECS实例使用的是经典网络,需要使用管理终端连接Windows实例进行配置,在完成配置后,网络才可以连通。

  10. 执行以下命令,确认系统的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"

系统显示类似如下。

Symptom

解决方法

执行以下命令,运行脚本。

powershell -executionpolicy bypass -file c:\AutoSysprep.ps1 -skiprearm -postaction "reboot"
说明

如果没有特定要求,AutoSysprep会随机生成密码和主机名。