針對未啟用的 Active Directory 型啟用 (ADBA) 客戶端進行疑難解答
注意事項
本文最初發佈為TechNet部落格,於2018年3月26日。
我最近協助客戶在其環境中部署 Windows Server 2016。 我們利用這個機會也將其啟用方法從 KMS 伺服器移轉至 Active Directory 型啟用。
作為進行所有變更的適當程序,我們已在客戶的測試環境中開始移轉。 我們遵循 Active Directory-Based 啟用與金鑰管理服務中的指示開始部署。 測試環境中的域控制器全都 Windows Server 2012 R2 執行,因此我們不需要準備樹系。 我們在 Windows Server 2012 R2 域控制器上安裝角色,並選擇 [Active Directory 型啟用] 作為大量啟用方法。 我們已安裝 KMS 金鑰,並將其命名為「KMS AD 啟用 (** LAB) 」。我們已逐步遵循部落格文章。
我們一開始會建置四部虛擬機、兩部 Windows 2016 Server Standard 和兩部 Windows 2016 Server Datacenter。 此時一切都很棒。 我們建置了執行 Windows 2016 Server Standard 的實體伺服器,且機器已正確啟動。
事實上,設定和設定非常簡單,因此該元件簡單且直接。 不過,我前一周建置的所有虛擬機都顯示它們未啟用。 我回到實體機器,沒關係。 我已前往客戶討論發生什麼事。 第一個問題是「週末有什麼變更?」和往常一樣,答案是「沒有」。這次沒有任何變更,我們必須找出發生什麼事。
我前往其中一個問題伺服器、開啟命令提示字元,並檢查命令的 slmgr /ao-list
輸出。 參數 /ao-list
會顯示 Active Directory 中的所有啟用物件。
結果顯示我們有兩個啟用物件:一個用於 Windows Server 2012 R2,另一個則是新建立的 KMS AD 啟用 (** LAB) 這是 Windows Server 2016 授權。 這會確認 Active Directory 已正確設定為啟用 Windows KMS 用戶端。
知道命令 slmgr
是用於授權啟用,我繼續使用不同的選項。 我已嘗試 /dlv
切換,這會顯示詳細的授權資訊。 這看起來沒問題,我執行的是標準版本的 Windows Server 2016、有啟用標識碼、安裝標識碼、驗證 URL,甚至是部分產品密鑰。
此時是否有人看到我錯過的內容? 在其他疑難解答步驟之後,我們會回到該處,但表示答案已在此螢幕快照中就已足夠。
我們現在的想法是,由於某些原因,密鑰已中斷,因此我使用 /upk
參數,這會卸載目前的密鑰。 雖然這可有效移除密鑰,但通常不是最佳做法。 伺服器應該在取得新金鑰之前重新啟動,它可能會讓伺服器處於錯誤狀態嗎? 我發現使用 /ipk
參數 (我稍後在疑難解答中所做的) 會覆寫現有的密鑰,並且是更安全的路由。
我再次執行 /dlv
參數,以查看詳細的授權資訊。 可惜的是,這並未提供任何有用的資訊,只是找不到產品密鑰的錯誤。 因為我剛才卸載密鑰,所以沒有密鑰。
我認為這是一個很長的嘗試,但我嘗試了 /ato
切換,這應該會針對已知的 KMS 伺服器 (或 Active Directory 啟動 Windows,因為案例可能) 。 同樣地,只有找不到產品的錯誤。
下一個想法是有時候停止和啟動服務會執行技巧,因此我接下來嘗試了。 我需要停止並啟動 Microsoft 軟體保護平台服務 (SPPSvc 服務) 。 從系統管理命令提示字元中,我使用信任的 net stop
和 net start
命令。 我一開始注意到服務並未執行,所以我認為這必須是它。
不過,啟動服務並嘗試再次啟用 Windows 之後,我仍會收到找不到產品的錯誤。
接著,我查看了其中一部疑難伺服器上的應用程式事件記錄檔。 我發現與授權啟用、事件標識碼 8198 相關的錯誤,其代碼為 0x8007007B。
查閱此程式代碼時,我發現一篇文章指出錯誤碼表示檔名、目錄名稱或磁碟區卷標語法不正確。 閱讀文章中所述的方法,似乎都不符合此情況。 當我執行 nslookup -type=all _vlmcs._tcp
命令時,我發現現有的 KMS 伺服器 (環境中仍有許多 Windows 7 和 Server 2008 機器,因此必須將它保留在) ,同時也需要五個域控制器。 這表示這不是 DNS 問題,而且問題位於其他位置。
所以我知道 DNS 沒問題。 Active Directory 已正確設定為 KMS 啟用來源。 實體伺服器已正確啟動。 這是否只是 VM 的問題? 目前有趣的一點是,我的客戶通知我,不同部門的某人也決定建置十幾部虛擬 Windows Server 2016 機。 因此,現在我假設有另外十幾部伺服器要處理,但不會啟用。 不過,這些伺服器啟動正常。
我回到 slmgr
命令,以瞭解如何啟用這些巨量。 這次我要使用 /ipk
參數,這可讓我安裝產品密鑰。 我前往附錄 A:KMS 用戶端安裝金鑰,以取得標準版 Windows Server 2016 的適當密鑰。 有些伺服器是 Datacenter,但我需要先修正此問題。
我使用 /ipk
參數來安裝產品金鑰,並選擇 Windows Server 2016 標準密鑰。
從這裡開始,我只會從數據中心體驗擷取結果,但結果相同。 我使用 /ato
參數來強制啟用。 我們收到一則很棒的訊息,指出產品已成功啟用。
/dlv
再次使用 參數,我們可以看到Active Directory 現在已啟用。
現在,發生什麼錯誤? 為什麼必須移除已安裝的金鑰,並新增這些一般金鑰,才能讓這些機器正常啟用? 為什麼其他十幾部機器啟動時沒有問題? 如先前所述,我在查看問題的初始階段遺漏了一些索引鍵。 我徹底混淆了,因此從初始部落格接觸到海報。 海報立即看到問題,並協助我瞭解我稍早錯過的內容。
當我執行第一個 /dlv
參數時,描述中的 是索引鍵。 描述為 Windows® 作業系統零售通道。 我已看過該問題,並認為零售通路表示該通道已購買且是有效的密鑰。
當我們查看正確啟動之伺服器的 /dlv
交換器輸出時,請注意描述現在會指出VOLUME_KMSCLIENT通道。 這可讓我們知道它確實是大量授權。
那麼,該零售通路代表什麼意思? 這表示用來安裝作業系統的媒體是 MSDN ISO。 我回到客戶,詢問是否有第二個 Windows Server 2016 ISO 在網路周圍浮動。 結果是,網路上有另一個 ISO,而且已用來建立其他十幾部機器。 他們會比較這兩個 ISO,並確定提供給我建置虛擬伺服器的 ISO 事實上是 MSDN ISO。 他們已從其網路中移除該 MSDN ISO,現在我們已啟用所有現有的伺服器,且不再擔心未來組建的啟用失敗。