如何在Windows Workstation或Server上强制同步时间?


Answers:


81

就像凯尔(Kyle)所说w32tm /resync的那样,这是现代的方式。有关w32tm命令的更多信息,请参见此Microsoft知识库链接(KB 307897)

还有net time一个是较旧的版本,但也许更容易。


4
w32tm /resync说:“计算机未重新同步,因为所需的时间更改太大。” 因为我的CMOS电池没电了,并且每次启动时2000年1月1日12:00 AM我的计算机时钟都会重置。有什么帮助吗?
永不退出2015年

根据blog.bruteforcetech.com/archives/911找到了解决方案,不要忘记重启W32Time服务net stop W32Time然后重试w32tm /resync
永不退出

1
链接断开。
Stijn Sanders

2
@LightnessRacesinOrbit和其他方法,如果出现“时间变化太大”错误,请使用w32tm /resync /force。但是,如果您没有启动服务,请运行net start w32time。两者均来自提升的提示。
cdlvcdlv

4
为了解决“时间变化太大”的问题,请将HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ Config中的注册表项MaxNegPhaseCorrection和MaxPosPhaseCorrection更改为最大值(ffffffff)
Tomas

37

对于那些仍然在问这个问题的人。

  1. 要更新,请使用以下命令(兼容2008和2012服务器)

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

用您的源代码更改ntp_server

  1. 重新启动计时服务

    net stop w32time
    net start w32time
    
  2. 重新同步时间

    w32tm /resync
    
  3. 验证您的同步状态

    w32tm /query /status
    

如果您的源正常工作和/或连接正常(防火墙或Microsoft Forefront也可能是问题),则上述命令应该没问题。以下命令可以帮助您进行故障排除

列出同伴

w32tm /query /peers

列出NTP来源:

w32tm /query /source

尼斯,全面的答案!设置NTP服务器的命令的确定+1。
Shaamaan

请注意,这对于没有“ / update”标志的Windows 10专业版是有效的,因为那是无效的。
Fmstrat

对于故障排除,测试与特定服务器的连接通常很有用:w32tm /monitor /computers:time.windows.com
Randy Orrison


16

您可以使用:

w32tm /resync

另外,使用w32tm /resync /rediscover还将“在重新同步之前强制重新检测资源丰富的网络”。

或使用:

net time /set

将提示您设置时间到DC。(适用于旧版本的Windows)


2
由于某种原因,w32tm /resync它对我不起作用,但net time /SET /Y确实起作用。我用/Ynet time,因为它显然不正确标准输入通过sshd的cygwin的版本去时读取。
qwertzguy

运行时w32tm /resyncThe 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

  • 如果当地时间很紧急,请更改此值(例如2050年12月31日):MaxNegPhaseCorrection
  • 如果当地时间延迟(例如,1980年1月1日),请更改此设置: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

请享用!:-)


您的答案可以使用MaxNegPhaseCorrectionand MaxPosPhaseCorrection值的功能说明,而不是建议盲目地禁用它们。这就是该脚本通过将其数据设置为0xFFFFFFFF来执行的操作
Twisty冒名顶替者,

您不能忽略提到的错误消息“由于所需的时间更改太大,计算机没有重新同步。” 而不更改MaxNegPhaseCorrection和MaxPosPhaseCorrection值中的数据。还是您找到了解决原始问题的任何可行解决方案?为什么要“盲目地”写作?如果您需要花很短的时间来通读,那么您会看到导出和导入这些值的原始数据,这与“盲目地”执行操作有点相去甚远。
阿科斯岛

您应该让此脚本将值更改为禁用,强制进行更新,然后将其更改回建议的值。
Cory Knutson

Twisty的有效观点并没有真正集中在NeverQuit提出的问题上……但是,Akos并未明确解释为什么该脚本是NeverQuit的合适解决方案。从本质上讲,存在注册表值MaxNegPhaseCorrection和MaxPosPhaseCorrection可以阻止W32Time服务对当前时间应用重大更改(在诸如外部时间源严重错误的情况下);但是,如果发生某些问题导致PDCe从当前时间快速漂移可靠的时间源,那么校正控件将防止w32tm修正较大的漂移。在这种情况下::: b
Creaky_Uncle_Nick

@Akos Downvote已撤消,原因是您指出脚本确实确实会将更改还原为MaxNegPhaseCorrectionMaxPosPhaseCorrection值。我仍然鼓励您对这两个设置的作用进行说明,因为这是您答案的关键特征,并且重要的是,管理员应意识到,如果他们将这些设置永久设置到位,则会将其系统配置为接受任何时间更改,不论大小,都可能破坏Kerberos和其他重要的网络服务。
Twisty冒名顶替者

2

如果配置了ntp服务器,则使用Powershell一个内衬:

gsv w32time | sasv; w32tm /resync /force

如果CMOS失败,则可以将此.bat文件放入启动文件中,这样它就可以在操作系统启动时重新同步:

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

/force不是的文档命令行选项w32tm /resync


0

按此顺序尝试。一直工作。

w32tm /unregister

w32tm /register

net stop w32time

net start w32time

w32tm /resync

0

如果主机是Windows Server 2016 Active Directory域控制器(ADDC),则几乎所有解决方案(@Akos除外)都无法工作,因为该主机将自身视为无法进行大量时间更改的“可靠”源。

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

此处显示的no /reliable:noMaxPosPhaseCorrection设置或任何其他命令均无法以可复制的方式立即起作用。

在更新注册表,启动服务,更新配置并再次重新启动服务之后,我仍然必须等待几分钟才能w32tm /resync /rediscover成功。

时间同步最终确实会成功,只是没有及时可靠的方式。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.