Jak wymusić synchronizację czasu na stacji roboczej lub serwerze z systemem Windows?


Odpowiedzi:


81

Jak powiedział Kyle, w32tm /resyncjest to nowoczesny sposób na zrobienie tego. Zobacz ten link do bazy wiedzy Microsoft Knowledge Base (KB 307897), aby uzyskać więcej informacji na temat polecenia w32tm.

Jest też net timewersja starsza, ale być może łatwiejsza.


4
w32tm /resyncmówi „Komputer nie dokonał ponownej synchronizacji, ponieważ wymagana zmiana czasu była zbyt duża”. ponieważ moja bateria CMOS jest rozładowana, a zegar komputera resetuje się przy każdym uruchomieniu o 01.01.2.00 12:00. Jakaś pomoc?
Nigdy nie wychodź

Znalezione rozwiązanie jak na blog.bruteforcetech.com/archives/911 , nie zapomnij zrestartować usługi W32Time, net stop W32Timea następnie spróbuj ponowniew32tm /resync
Nigdy nie wychodź

1
Link jest zepsuty.
Stijn Sanders

2
@LightnessRacesinOrbit i inni, jeśli pojawi się błąd „zmiana czasu była zbyt duża”, użyj w32tm /resync /force. Ale jeśli nie masz uruchomionej usługi, uruchom net start w32time. Oba z podwyższonego monitu.
cdlvcdlv

4
Aby rozwiązać problem „zmiana czasu była zbyt duża” zmień wpisy rejestru MaxNegPhaseCorrection i MaxPosPhaseCorrection w HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ Config to maximum (ffffffff)
Tomas F.

37

Dla tych, którzy wciąż zadają to pytanie.

  1. Aby zaktualizować, użyj poniższego polecenia (zgodny z serwerami 2008 i 2012)

    w32tm /config /manualpeerlist:"ntp_server" /syncfromflags:manual /reliable:yes /update
    

zmień serwer ntp z twoim źródłem

  1. Uruchom ponownie usługę czasu

    net stop w32time
    net start w32time
    
  2. Ponownie zsynchronizuj czas

    w32tm /resync
    
  3. Sprawdź status synchronizacji

    w32tm /query /status
    

Powyższe polecenia powinny być poprawne, jeśli źródła działają poprawnie i / lub połączenie jest prawidłowe (zapora sieciowa lub Microsoft Forefront mogą również stanowić problem). Poniższe polecenia mogą pomóc w rozwiązywaniu problemów

Aby wymienić partnerów

w32tm /query /peers

Aby wymienić źródła NTP:

w32tm /query /source

Ładna, wyczerpująca odpowiedź! Określ +1 dla polecenia skonfigurowania serwera NTP.
Shaamaan,

Uwaga: działa to w systemie Windows 10 Professional bez flagi „/ update”, ponieważ jest to nieprawidłowe.
Fmstrat,

W przypadku rozwiązywania problemów często przydatne jest przetestowanie połączenia z określonym serwerem:w32tm /monitor /computers:time.windows.com
Randy Orrison


16

Możesz użyć:

w32tm /resync

Ponadto użycie w32tm /resync /rediscoverspowoduje „wymuszenie ponownego wykrycia zasobów sieci przed resynchronizacją”.

Lub używając:

net time /set

Poprosi Cię o ustawienie czasu na DC. (Działa dla starszych wersji systemu Windows)


2
Z jakiegoś powodu w32tm /resyncnie działało dla mnie, ale działało net time /SET /Y. Użyłem /Ydo net timeponieważ najwyraźniej nie czyta stdin poprawnie, gdy przechodzi z sshd Cygwin.
qwertzguy

Podczas pracy w32tm /resyncdostałem komunikat The computer did not resync because no time data was available.nawet po ponownym uruchomieniu usługi, ale net time /SETdziałał poprawnie dla mnie.
Chris Magnuson

3

System operacyjny: MS Windows 7

Wszystkie powyższe pomysły zostały wypróbowane, ale nie pomogły. Pierwotny problem nadal występuje: „ Komputer nie dokonał ponownej synchronizacji, ponieważ wymagana zmiana czasu była zbyt duża ”.

Rozwiązanie znajduje się w rejestrze: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ w32time \ Config

  • zmień to, jeśli czas lokalny się spieszy (np. 31 grudnia 2050 r.): MaxNegPhaseCorrection
  • zmień to, jeśli czas lokalny jest opóźniony (np. 1 stycznia 1980 r.): MaxPosPhaseCorrection
  • Domyślne wartości to 0xD2F0 (tj. 54000 sek. = 15 godzin)

(użyj Google, aby uzyskać więcej informacji)

Używam tego prostego win_clock_sync.batpliku z Start Menu StartUp:

echo off
echo Sync computer time from internet
echo.
echo Back-up registry w32time\Config
reg export HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32time\Config exported_w32time.reg /y
rem changing the registry keys temporarly:
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32time\Config /v MaxNegPhaseCorrection /d 0xFFFFFFFF /t REG_DWORD /f
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\w32time\Config /v MaxPosPhaseCorrection /d 0xFFFFFFFF /t REG_DWORD /f
echo.
echo w32tm /config /update
w32tm /config /update
echo.
echo w32tm /resync /rediscover 
w32tm /resync /rediscover 
echo.
echo Restore registry w32time\Config
reg import exported_w32time.reg

Cieszyć się! :-)


Twoja odpowiedź mogłaby objaśnić funkcję wartości MaxNegPhaseCorrectioni MaxPosPhaseCorrectionzamiast sugerować, że należy je ślepo wyłączać. Tak właśnie działa ten skrypt, ustawiając ich dane na 0xFFFFFFFF .
Twisty Impersonator

Nie można zignorować wspomnianego komunikatu o błędzie „Komputer nie dokonał ponownej synchronizacji, ponieważ wymagana zmiana czasu była zbyt duża”. bez zmiany danych w wartościach MaxNegPhaseCorrection i MaxPosPhaseCorrection. Czy znalazłeś jakieś działające rozwiązanie pierwotnego problemu? A dlaczego piszesz „na ślepo”? Jeśli zajmie Ci to trochę czasu, możesz zobaczyć eksportowanie i importowanie oryginalnych danych tych wartości, co jest dalekie od robienia czegoś „na ślepo”.
Akos

Powinieneś kazać temu skryptowi zmienić wartości na wyłączone, wymusić aktualizację, a następnie zmienić je z powrotem na zalecane wartości.
Cory Knutson

Twisty ma ważne punkty, które tak naprawdę nie koncentrują się na problemie podniesionym przez NeverQuit ... ale wtedy Akos nie wyjaśnił jasno, dlaczego skrypt jest odpowiednim rozwiązaniem dla NeverQuit. Zasadniczo wartości rejestru MaxNegPhaseCorrection i MaxPosPhaseCorrection istnieją po to, aby powstrzymać usługę W32Time przed wprowadzeniem dramatycznych zmian w bieżącym czasie [w okolicznościach takich jak złe źródło czasu zewnętrznego] Jednak jeśli wystąpi jakiś problem, który spowoduje, że PDCe szybko dryfuje z wiarygodne źródło czasu, wtedy korekty korekty zapobiegną naprawie dużego dryfu przez W32TM. W tej sytuacji ::: b
Creaky_Uncle_Nick

@Akos Downvote wycofano na podstawie wskazania, że ​​skrypt rzeczywiście przywraca zmiany do wartości MaxNegPhaseCorrectioni MaxPosPhaseCorrection. Nadal zachęcam do wyjaśnienia, co robią te dwa ustawienia, ponieważ są one kluczową cechą Twojej odpowiedzi. Ważne jest, aby administrator wiedział, że jeśli wprowadzą te ustawienia na stałe, skonfiguruje swój system, aby akceptował każdą zmianę czasu, bez względu na to, jak duże, co może zepsuć Kerberos i inne ważne usługi sieciowe.
Twisty Impersonator

2

PowerShell One Liner, jeśli skonfigurowano serwer NTTP:

gsv w32time | sasv; w32tm /resync /force

Możesz wstawić ten plik .bat do uruchamiania, jeśli bateria CMOS uległa awarii, aby można go było ponownie zsynchronizować po uruchomieniu systemu operacyjnego:

@powrshell -NoProfile -Command 'gsv w32time | sasv; w32tm /resync /force'

/forcenie jest udokumentowaną opcją wiersza polecenia dla w32tm /resync.
Dai,


0

Spróbuj w tej kolejności. Działa cały czas.

w32tm /unregister

w32tm /register

net stop w32time

net start w32time

w32tm /resync

0

Prawie żadne z rozwiązań (z wyjątkiem @Akos) nie działa, jeśli host jest kontrolerem domeny Active Directory (ADDC) systemu Windows Server 2016, ponieważ traktuje się jako „niezawodne” źródło, które nie może dokonać dużych zmian.

w32tm /resync /forcenie działa, ponieważ /forcenie pojawia się na serwerze 2016.

net time /SET /Y też nie działa, ponieważ zapytałby:

Czy chcesz ustawić czas komputera lokalnego, aby pasował do czasu \AD.example.net? (T / N) [T]

Oczywiście nie będzie działać, jeśli jesteś włączony AD.example.net, /Ypo prostu ukrywa pytanie.

Kroki działają dla mnie przy użyciu programu PowerShell:

  1. Ustaw usługę w32time jako zawodną :
w32tm /config /reliable:no /syncfromflags:manual /update

Opcja /syncfromflags:manualoznacza synchronizację z NTP wymienionym na liście równorzędnej (tj. Zewnętrznym NTP), /updateaby powiadomić usługę czasu, że konfiguracja uległa zmianie.

  1. Uruchom ponownie w32time
Stop-Service w32time
Start-Service w32time
  1. Synchronizacja
w32tm /resync

To powinno działać.

  1. Jeśli potrzebujesz ADDC jako niezawodnego źródła czasu, spraw, aby był ponownie niezawodny:
w32tm /config /reliable:yes /update
Stop-Service w32time
Start-Service w32time

0

Mam obraz Win10, który mogę przywrócić do migawki, w której ten komunikat o błędzie jest zawsze powtarzalny: "The computer did not resync because the required time change was too big."

Próbowałem napisać rozwiązanie tego problemu bezskutecznie:

reg import nettime.reg # updates MaxPosPhaseOffset and MaxNegPhaseOffset

net start w32time
w32tm.exe /config /manualpeerlist:"pool.ntp.org",0x8 /syncfromflags:manual /reliable:no /update  
w32tm.exe /query /configuration
w32tm.exe /resync /rediscover
w32tm.exe /resync /force

Ani /reliable:noani MaxPosPhaseCorrectionustawień, ani żadnych innych poleceń wskazane tutaj pracował bezpośrednio w powtarzalny sposób.

Po zaktualizowaniu rejestru, uruchomieniu usługi, aktualizacji konfiguracji i ponownym uruchomieniu usługi nadal musiałem czekać wiele minut, w32tm /resync /rediscoveraby odnieść sukces.

Synchronizacja czasu ostatecznie się powiedzie, po prostu nie w terminowy i niezawodny sposób.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.