故障診斷 Windows 時間服務 w32time 問題
摘要: Active Directory 網域中的 Windows 時間服務 (w32time) 問題;如何使用 W32TM 重新同步來修正同步時間、設定時間伺服器,以及在 Windows Server 上使用 W32TM 命令。
症状
Windows 時間服務在 Active Directory 中很重要。依預設,如果修正時區差異和日光節約時間,Kerberos 驗證會要求網域中所有機器上的時鐘都同步到彼此的五分鐘內。其時鐘超出此範圍的機器無法進行身份驗證,也無法訪問域資源。
原因
在 AD 網域中,保持 PDC 模擬器 FSMO 角色的網域控制站 (DC) 是整個網域的主要時間伺服器。但這並不表示網域中的每一台機器都直接與 PDC 模擬器同步處理其時鐘。其他 DC 會與 PDC 模擬器同步,而成員伺服器和用戶端則可與任何 DC 同步。在此層級中,PDC 模擬器應該是設定為與外部時間來源同步的唯一機器,例如公用 NTP 伺服器。網域中的所有其他項目皆應設定為與 AD 同步。任何其他組態可能會導致時鐘同步中斷。
請參閱Microsoft文件 Windows 時間服務如何運作 ,以取得 Windows 時間服務運作方式的詳細資訊。
解决方案
確定問題的範圍。
故障診斷 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將機器設定為在以下位置使用時間伺服器:<list>作為它的時間來源。
注意:如果在<list>,它們必須用空格分隔,並且整個清單必須用引號括起來。
如果整個網域受到影響:
- 如果網域中所有電腦上的時間皆不正確,則 PDC 模擬器可能就是問題的來源。執行
netdom query fsmo命令,以判斷哪個 DC 擔任 PDC 模擬器角色。 - 執行
w32tm /query /source從 PDC 模擬器上的命令提示符中,確保它已配置為與外部時間源同步。PDC 模擬器永遠不應設定為與網域同步,因為它是網域的主要時間來源。 - 如果 PDC 模擬器是虛擬機器 (VM),請停用主客時鐘同步。執行此作業的程序取決於在虛擬化主機上執行的作業系統。
- 若要將 PDC 模擬器設定為與一或多個外部時間伺服器同步,請使用下列命令:
w32tm /config /syncfromflags:MANUAL /manualpeerlist:<list> /update注意:如果在<list>,它們必須用空格分隔,並且整個清單必須用引號括起來。
Windows 時間服務登錄檔設定
可使用 w32tm 在上述過程中指定的命令會更改 Windows 時間服務註冊表值,這些值都位於以下註冊表項下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time
您可以手動設定這些值,而非使用 w32tm 命令。如果您選擇這樣做,以下Microsoft文件可能會有用:
- Windows 時間服務工具與設定
(包括有關註冊表設置的部分)
- 如何在 Windows 伺服器中設定授權時間伺服器
群組原則
如果您透過以下方式變更為 Windows 時間服務: w32tm 命令或使用註冊表,但這些更改根本不生效或僅在短時間內生效,然後還原到其以前的值,組策略物件 (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命令。
其他信息
- 如何知道 Windows 時間服務是否正在執行中?
services.msc),找到 Windows 時間,並確認其狀態為 執行中。您也可以檢查 啟動類型 ,以確定它已設為 自動 或 手動。
請參閱 Meinberg 文章 Windows 時間服務 (w32time) 同步的
- Windows 時間服務的準確度為何?
如需詳細資訊,請參閱 Microsoft 文章 設定系統以實現高精度 。