本文介紹如何解決執行個體之間無法互相訪問AD域,或者無法同時加入AD域的問題。
問題描述
使用同一個Windows Server鏡像建立幾台ECS執行個體後,執行個體之間無法互相訪問AD域,或者無法同時加入AD域。
問題原因
使用同一個Windows Server鏡像的幾台執行個體中,其電腦安全性識別碼SID(Security Identifier)相同,因此無法相互訪問AD域。此時您需要修改執行個體的SID,再搭建域環境。
解決方案
大量建立不同SID的Windows執行個體
使用最新的公用鏡像建立執行個體即可,因為最新的公用鏡像已經修複此問題。
製作自訂鏡像
參考修改一台Windows執行個體的SID的方案,執行步驟的1-7步。
執行以下命令,運行指令碼。
.\AutoSysprep.ps1 -PostAction "shutdown"參考使用執行個體建立自訂鏡像製作鏡像後,基於該自訂鏡像建立執行個體即可。
修改一台Windows執行個體的SID
Windows系統內建的sysprep命令可以將已安裝的Windows鏡像中刪除特定的系統資訊,其中包括SID。本文使用PowerShell的AutoSysprep.ps1指令檔,通過系統內建的sysprep命令修改Windows執行個體的SID。需要注意的是,sysprep命令會將User Profile恢複為預設值,執行sysprep命令後會刪除案頭上建立的檔案。如果您希望修複故障後自動刪除指令碼,可以將檔案放置在案頭上執行。
操作步驟
為執行個體的系統硬碟建立快照,避免資料丟失。
具體操作,請參見建立快照。
遠端連線ECS執行個體。
具體操作,請參見使用Workbench終端串連登入Windows執行個體(RDP)。
登入系統終端,執行
powershell命令進入PowerShell互動模式。說明必須以管理使用者執行
powershell命令。執行以下命令,切換至C盤根目錄。
cd\執行以下命令,查看系統的SID。
whoami /user下載AutoSysprep指令碼工具,並上傳至執行個體的C盤。
進入
AutoSysprep.ps1指令碼工具所在目錄,執行以下命令,查看指令碼工具說明。.\AutoSysprep.ps1 -help執行以下命令,運行指令碼。
.\AutoSysprep.ps1 -SkipRearm -Password "<$Password>" -PostAction "reboot" //<$Password>為需要設定的密碼。等待一段時間,再次登入執行個體,並執行以下命令,確認系統的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 RemoteSignedWindows Server 2008系統運行指令碼時提示未進行數位簽章
問題現象
執行以下命令,運行指令碼。
.\AutoSysprep.ps1 -skiprearm -postaction "reboot"解決方案
執行以下命令,運行指令碼。
powershell -executionpolicy bypass -file c:\AutoSysprep.ps1 -skiprearm -postaction "reboot"如果沒有特定要求,AutoSysprep會隨機產生密碼和主機名稱。