Как принудительно синхронизировать время на рабочей станции или сервере Windows?

84

Что такое команда для синхронизации рабочей станции или сервера Windows с настроенным источником времени?

Кайл Брандт
источник
1
Подробнее о W32tm можно узнать здесь ... technet.microsoft.com/en-us/library/bb491016.aspx
Натан Хартли,

Ответы:

81

Как сказал Кайл, w32tm /resyncэто современный способ сделать это. См. Эту ссылку на базу знаний Microsoft (KB 307897) для получения дополнительной информации о команде w32tm.

Существует также net timeболее старая версия, но, возможно, проще.

Шончан Торпейст
источник
4
w32tm /resyncговорит: «Компьютер не синхронизировался, потому что требуемая смена времени была слишком большой». поскольку моя батарея CMOS разряжена, и часы моего компьютера сбрасываются при каждой загрузке в 1/1/2000 12:00. Любая помощь?
Никогда не выходить
Нашел решение в соответствии с blog.bruteforcetech.com/archives/911 , не забудьте перезапустить службу W32Time, net stop W32Timeзатем повторите попыткуw32tm /resync
Никогда не
1
Ссылка не работает.
Стейн Сандерс
2
@LightnessRacesinOrbit и другие, если вы получили ошибку «изменение времени было слишком большим», используйте w32tm /resync /force. Но если у вас не запущена служба, запустите net start w32time. Оба из повышенного уровня.
cdlvcdlv
4
Чтобы решить, «изменение времени было слишком большим», измените записи реестра MaxNegPhaseCorrection и MaxPosPhaseCorrection в HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ Config to максимум (ffffffff)
Томас Ф.
37

Для тех, кто еще задает этот вопрос.

  1. Для обновления используйте команду ниже (совместимая с сервером 2008 и 2012)

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

измените ntp_server с вашим источником

  1. Перезапустите службу времени

    net stop w32time
    net start w32time
    
  2. Resync время

    w32tm /resync
    
  3. Проверьте свой статус синхронизации

    w32tm /query /status
    

Команды выше должны подойти, если ваши источники работают правильно и / или ваше соединение в порядке (брандмауэр или Microsoft Forefront также могут быть проблемой). Команды ниже могут помочь с устранением неполадок

Перечислить сверстников

w32tm /query /peers

Чтобы перечислить источники NTP:

w32tm /query /source
user3011708
источник
Хороший, исчерпывающий ответ! Определите +1 для команды для настройки NTP-сервера.
Shaamaan
Как примечание, это работает для Windows 10 Professional без флага "/ update", поскольку это недопустимо.
Fmstrat
Для устранения неполадок часто полезно проверить подключение к определенному серверу:w32tm /monitor /computers:time.windows.com
Рэнди Оррисон
24

Вы можете использовать следующую команду:

w32tm /resync

Кайл Брандт
источник
16

Вы можете использовать:

w32tm /resync

Кроме того, использование w32tm /resync /rediscoverтакже «принудительно повторно обнаружит ресурсы, выделенные перед повторной синхронизацией».

Или используя:

net time /set

Вам будет предложено установить время для DC. (Работает для более старых версий Windows)

Бретт Ларсон
источник
2
По какой-то причине w32tm /resyncу меня не сработало, но сработало net time /SET /Y. Я использовал /Yдля, net timeпотому что он, очевидно, не читает STDIN должным образом при прохождении через SSH из Cygwin.
qwertzguy
При запуске w32tm /resyncя получал сообщение The computer did not resync because no time data was available.даже после перезапуска службы, но net time /SETу меня работал нормально.
Крис Магнусон
3

ОС: MS Windows 7

Все вышеперечисленные идеи были опробованы, но не помогли. Первоначальная проблема все еще существует: « Компьютер не был синхронизирован, потому что требуемое изменение времени было слишком большим ».

Решение найдено в реестре: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ w32time \ Config

  • измените это, если местное время спешит (например, 31 декабря 2050 года): MaxNegPhaseCorrection
  • измените это, если местное время задерживается (например, 1 января 1980 года): MaxPosPhaseCorrection
  • Значения по умолчанию: 0xD2F0 (т. Е. 54000 с = 15 часов).

(используйте Google для более подробной информации)

Я использую этот простой win_clock_sync.batфайл из меню «Пуск»:

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

Наслаждайтесь! :-)

Акос
источник
Ваш ответ может использовать объяснение функции от MaxNegPhaseCorrectionи MaxPosPhaseCorrectionзначений вместо того , чтобы предположить , что они должны быть слепо отключены. Это то, что делает этот скрипт, устанавливая их данные в 0xFFFFFFFF .
Twisty Impersonator
Вы не можете игнорировать упомянутое сообщение об ошибке «Компьютер не был синхронизирован, поскольку требуемое изменение времени было слишком большим». без изменения данных в значениях MaxNegPhaseCorrection и MaxPosPhaseCorrection. Или вы нашли какое-либо рабочее решение исходной проблемы? А почему ты пишешь "вслепую"? Если вам потребуется немного времени для чтения, то вы можете увидеть экспорт и импорт исходных данных этих значений, что немного отнюдь не значит делать что-то «вслепую».
Акос,
Этот сценарий должен изменить значения на отключенные, принудительно обновить, а затем изменить их обратно на рекомендуемые значения.
Кори Кнутсон
У Twisty есть веские аргументы, которые на самом деле не фокусируются на проблеме, поднятой NeverQuit ... но тогда Akos не ясно объяснил, почему скрипт является подходящим решением для NeverQuit. В сущности, значения реестра MaxNegPhaseCorrection и MaxPosPhaseCorrection существуют, чтобы не дать службе W32Time применить радикальные изменения к текущему времени [при таких обстоятельствах, как внешний источник времени работает плохо] Однако, если возникает какая-либо проблема, приводящая к быстрому дрейфу PDCe из надежный источник времени, тогда коррекция управления предотвратит w32tm, фиксирующий большой дрейф. В этой ситуации ::: b
Creaky_Uncle_Nick
@Akos Downvote убирается на основе вашего указывая, что ваш сценарий действительно делает откатить изменения к MaxNegPhaseCorrectionи MaxPosPhaseCorrectionценностям. Я по-прежнему рекомендую включить объяснение того, что делают эти две настройки, поскольку они являются ключевой характеристикой вашего ответа, и важно, чтобы администратор знал, что, если они установят эти настройки на постоянной основе, они настроят свою систему так, чтобы она принимала любые изменения времени, независимо от того, насколько большой, который может сломать Kerberos и другие важные сетевые сервисы.
Twisty Impersonator
2

Powershell one liner, если настроен ntp сервер:

gsv w32time | sasv; w32tm /resync /force

Вы можете поместить этот файл .bat в автозагрузку, если ваша CMOS-батарея провалилась, чтобы он мог повторно синхронизироваться при запуске ОС:

@powrshell -NoProfile -Command 'gsv w32time | sasv; w32tm /resync /force'
majkinetor
источник
/forceне задокументированный параметр командной строки для w32tm /resync.
Дай
0

Попробуйте в таком порядке. Работает все время.

w32tm /unregister

w32tm /register

net stop w32time

net start w32time

w32tm /resync
slayernoah
источник
0

Почти ни одно из решений (кроме @Akos) не работает, если хост является контроллером домена Active Directory (ADDC) Windows Server 2016, поскольку он рассматривает себя как «надежный» источник, который не может вносить большие изменения.

w32tm /resync /forceне работает, потому что /forceне отображается на сервере 2016.

net time /SET /Y тоже не работает, потому что спросил бы:

Вы хотите установить время локального компьютера, чтобы соответствовать времени в \AD.example.net? (Да / Нет) [Да]

Конечно, это не сработает, если вы включены AD.example.net, /Yпросто скрывает вопрос.

Шаги работают для меня с помощью PowerShell:

  1. Установить службу w32time как ненадежную :
w32tm /config /reliable:no /syncfromflags:manual /update

Опция /syncfromflags:manualозначает синхронизацию с NTP, указанным в списке пиров (т. Е. Внешним NTP), /updateдля уведомления службы времени, в которой изменилась конфигурация.

  1. Перезапустите w32time
Stop-Service w32time
Start-Service w32time
  1. Синхронизация
w32tm /resync

Это должно работать.

  1. Если вам действительно нужен ADDC как надежный источник времени, сделайте его снова надежным:
w32tm /config /reliable:yes /update
Stop-Service w32time
Start-Service w32time
Дин-Йи Чен
источник
0

У меня есть образ Win10, который я могу восстановить в моментальный снимок, где это сообщение об ошибке всегда воспроизводимо: "The computer did not resync because the required time change was too big."

Я попытался написать решение этой проблемы безрезультатно:

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

Ни , /reliable:noни MaxPosPhaseCorrectionнастройки, ни какие - либо другие команды , указанные здесь сразу же работал воспроизводимым способом.

После обновления реестра, запуска службы, обновления конфигурации и повторного запуска службы мне все еще приходилось ждать много минут, прежде чем я w32tm /resync /rediscoverдобился успеха.

Синхронизация времени в конечном итоге удалась, но не своевременно и надежно.

Comotion
источник