Windows 時間服務在 Active Directory 中很重要。依預設,如果修正時區差異和日光節約時間,Kerberos 驗證會要求網域中所有機器上的時鐘都同步到彼此的五分鐘內。其時鐘超出此範圍的機器無法進行身份驗證,也無法訪問域資源。
在 AD 網域中,保持 PDC 模擬器 FSMO 角色的網域控制站 (DC) 是整個網域的主要時間伺服器。但這並不表示網域中的每一台機器都直接與 PDC 模擬器同步處理其時鐘。其他 DC 會與 PDC 模擬器同步,而成員伺服器和用戶端則可與任何 DC 同步。在此層級中,PDC 模擬器應該是設定為與外部時間來源同步的唯一機器,例如公用 NTP 伺服器。網域中的所有其他項目皆應設定為與 AD 同步。任何其他組態可能會導致時鐘同步中斷。
如需 Windows 時間服務運作方式的詳細資訊, 請參閱此 TechNet 網站 。
判斷問題的範圍
故障診斷 Windows 時間服務問題的第一步應是去判斷受影響的機器數量。如果只有一台電腦上的時間不正確,則修正問題所需的步驟會與修正整個網域範圍內時間問題所需的步驟不同。
如果只有幾台機器受到影響
- 如果受影響的機器執行的是 Windows Vista 或更新版本,請在命令提示字元執行 w32tm /query /source,以判斷受影響機器的時間來源。只有在 PDC 模擬器上執行此命令時,才應列出外部時間來源;否則,此命令應輸出網域中 DC 的名稱。
- 此 w32tm /query /status 命令也會顯示機器的時間來源,以及其他可能有用的資訊。此 /verbose 交換器會提供更多詳細資訊。與第一個命令一樣,這些交換器僅在執行 Windows Vista 或更新版本的機器上可用。
- 如果列出正確的時間來源,您可以使用 w32tm /resync 來嘗試重新同步機器的時鐘與時間來源。將 /rediscover 交換器新增至此命令會導致機器先嘗試探索網路時間來源,然後嘗試重新同步。
- 若要變更機器的時間來源,您可以使用以下其中一個命令:
w32tm /config /syncfromflags:DOMHIER /update 會將機器設定為使用網域層級 (AD) 作為其時間來源。
w32tm /config /syncfromflags:MANUAL /manualpeerlist:<list> /update 將機器設定為使用清單中>的時間伺服器<作為其時間來源。
注意:如果在清單中>指定<了多個時間伺服器,則必須用空格分隔,並且整個清單必須用引號括起來。
如果整個網域受到影響
- 如果網域中所有電腦上的時間皆不正確,則 PDC 模擬器可能就是問題的來源。在 DC 上執行 netdom query fsmo 命令,以判斷哪個 DC 擔任 PDC 模擬器角色。
- 在 PDC 模擬器上,從命令提示字元執行 w32tm /query /source,以確保其已設定為與外部時間來源同步。PDC 模擬器永遠不應設定為與網域同步,因為它是網域的主要時間來源。
- 如果 PDC 模擬器是虛擬機器 (VM),請停用主客時鐘同步。執行此作業的程序取決於在虛擬化主機上執行的作業系統。
- 若要將 PDC 模擬器設定為與一或多個外部時間伺服器同步,請使用下列命令:
w32tm /config /syncfromflags:手動 /manualpeerlist:<list> /update
注意:如果在清單中>指定<了多個時間伺服器,則必須用空格分隔,並且整個清單必須用引號括起來。
Windows 時間服務登錄檔設定
在上述程序中指定的 w32tm 命令會變更 Windows 時間服務登錄檔值,這些值全都位於下列登錄檔機碼底下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time
當然,您可以手動設定這些值,而不用使用 w32tm 命令。如果您選擇執行此動作,下列網站可能有幫助:
群組原則
如果您使用 w32tm 命令 (或使用登錄) 變更 Windows 時間服務,但這些變更完全不會生效,或只會在還原到先前的值之前短暫生效,則可能會有群組原則物件 (GPO) 覆寫您的變更。Windows 時間服務的群組原則設定包含許多相同的項目,可使用登錄檔或 w32tm 命令進行設定。您可以在以下位置找到這些設定:
Computer Configuration\Policies\Administrative Templates\System\Windows Time Service
將 Windows 時間服務登錄檔值重設至預設設定
如果其他所有步驟皆失敗,此程序會將 Windows 時間服務重設至其預設設定:
- 開啟服務主控台並停止 Windows 時間服務 (或從命令提示字元執行 net stop w32time) (如果它正在執行)。
- 開啟提升的命令提示字元,然後執行 w32tm /unregister,從登錄檔中移除 Windows 時間服務。服務主控台中不會再列出該服務。
- 執行 w32tm /register 以使用其預設的登錄檔設定重新建立服務。
- 進行任何必要的登錄檔變更,然後在服務主控台中啟動 Windows 時間服務或使用 net start w32time 命令。