问题现象
使用同一个Windows镜像创建的几台实例之间无法互相访问域或者无法同时加入域。
原因分析
使用同一个Windows镜像的几台实例,其SID(计算机安全标识符Security Identifier)是一样的。此时需要修改系统SID,以避免无法相互访问域,再进行域环境的搭建。
解决方法
Windows系统自带sysprep
命令可以从已安装的Windows映像删除所有系统特定的信息,其中包括SID。脚本工具sysprep.ps1使用系统自带sysprep
命令完成修改Windows SID。本文描述如何使用脚本工具sysprep.ps1修改系统SID。文档描述的内容适用于Windows Server 2008、Windows Server 2012和Windows Server 2016系统。
注意:
- 在修改系统SID前,建议您为系统盘创建快照,避免意外失败导致系统崩溃。
sysprep
会将User Profile恢复为默认值,执行sysprep
后会删除桌面上创建的文件。如果您希望执行脚本后自动删除,可以将文件放置在桌面上执行。
修改系统SID
按以下步骤修改系统SID。
- 远程连接Windows实例。
- 下载脚本工具 sysprep.ps1,存放在C盘。
- 启动CMD,运行命令
powershell
。
注意:
如果您不是管理员用户,必须以管理员身份运行PowerShell。 - 运行命令
cd\
切换路径到C盘根目录。 - 运行命令
.\Sysprep.ps1 -help
查看脚本说明。
参数说明:参数 说明 -skiprearm 默认将Windows操作系统恢复到原始授权许可状态,如不需恢复,添加该参数。 -ReserveNetwork 运行脚本后保留经典网络实例的网络配置信息(IP、Subnet、Gateway、DNS),不会变动VPC网络类型ECS实例使用DHCP获取IP的配置。 -skippassword 使用默认密码Aliyun1A。 -ReserveHostname 保持实例主机名不变。 -post_action 运行脚本后的后续操作。取值范围:shutdown | reboot | quit - 运行命令
whoami /user
查看系统SID。
- 运行命令
.\Sysprep.ps1 -ReserveHostname -ReserveNetwork -skiprearm -post_action "reboot"
运行脚本。 - 在弹窗中输入密码,并单击 确定,使实例自动重启。
- 远程连接Windows实例。
- 运行命令
whoami /user
重新查看系统SID。
现在,您可以用ECS实例搭建域环境了。
注意事项
- 如果没有特定要求,运行以下命令时您需要修改密码。
powershell -executionpolicy bypass -file c:\sysprep.ps1 -ReserveHostname -ReserveNetwork -skiprearm -post_action "reboot"
- 如果是经典网络实例,您需要在第8步后通过管理终端登录实例完成配置,网络才可以连通。
- 如果需要批量部署,按以下步骤操作避免重复执行脚本:
- 运行命令
.\Sysprep.ps1
执行脚本。 - 输入密码后,单击 确定 完成配置。之后,实例处于关机状态,不要启动实例。
- 创建 系统盘快照。
- 通过 快照创建自定义镜像,并使用该 自定义镜像创建新的实例 或者 将其他实例的操作系统更换为该自定义镜像。
- 运行命令
Windows Server 2008常见问题
常见问题1:执行命令.\Sysprep.ps1 -help
查看脚本说明时报如图所示错误。
解决方法:运行以下命令放开限制。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
常见问题2:执行命令.\Sysprep.ps1 -ReserveHostname -ReserveNetwork -skiprearm -post_action "reboot"
运行脚本时提示未进行数字签名报如图所示错误。
解决方法:在CMD中运行以下命令。您可以参见参数说明自行设置。
powershell -executionpolicy bypass -file c:\sysprep.ps1 -ReserveHostname -ReserveNetwork -skiprearm -post_action "reboot"
评论