本文介紹如何解決執行個體之間無法互相訪問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會隨機產生密碼和主機名稱。