Windows 时间同步 分秒校对-批处理脚本

请注意,本文编写于 125 天前,最后修改于 120 天前,其中某些信息可能已经过时。

@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
title www.nat.ee - 时间同步
set Enabled=1
rem 启动'1' 关闭'0'

set Type=NTP
rem 类型: NoSync NTP NT5DS AllSync

set NtpServer=cn.pool.ntp.org
rem NtpServer: NTP 时间源的域名系统(DNS)名称或 IP 地址。此值的格式是“dns 名称,标志”,其中标志是该主机标志的十六进制位掩码。有关详细信息,请参阅“Windows 时间服务组策略设置”中的“与 Windows Time 关联的 NTP 客户端组策略设置”部分(http://go.microsoft.com/fwlink/?LinkId=139727)。默认值是“time.windows.com,0x09”。

set CrossSiteSyncFlags=2
rem CrossSiteSyncFlags: 此值用位掩码表示,控制 W32time 如何选择其自身站点之外的时间源。可能的值为 0、1 和 2。此值设置为 0(不)时指示时间客户端不应尝试与自身站点之外的时间同步。此值设置为 1(仅 PDC)时指示,当客户端必须与自身站点之外的伙伴同步时间时,只能使用作为其他域中主域控制器(PDC)仿真器操作主机的计算机作为同步伙伴。此值设置为 2(所有)时指示可以使用任何同步伙伴。如果未设置 NT5DS 值,此值将被忽略。默认值为十进制值 2(十六进制值 0x02)。

set ResolvePeerBackoffMinutes=1
rem ResolvePeerBackoffMinutes: 此值(分钟)控制上一次尝试失败时 W32time 再次尝试解析 DNS 名称之前等待的时间。默认值为 15 分钟。

set ResolvePeerBackoffMaxTimes=10
rem ResolvePeerBackoffMaxTimes: 此值控制在重新启动发现进程之前 W32time 尝试解析 DNS 名称的次数。DNS 名称解析每失败一次,下一次尝试之前等待的时间将是前一次等待时间的两倍。默认值为尝试 7 次。

set SpecialPollInterval=60
rem SpecialPollInterval: 此 NTP 客户端值(秒)控制当时间源配置为使用特殊轮询间隔时,轮询手动配置时间源的频率。如果在 NTPServer 设置上启用了 SpecialInterval 标志,则客户端将使用设置为 SpecialPollInterval 的值(而不是 MinPollInterval 和 MaxPollInterval 值)来确定轮询时间源的频率。默认值为 3600 秒(1 小时)。

set EventLogFlags=0
rem EventLogFlags: 此值是一个位掩码,控制可以记录到事件查看器系统日志中的事件。若此值设置为 0x1,则指示每次检测到时间跳跃时 W32time 都将创建一个事件。若此值设置为 0x2,则指示每次更改时间源时 W32time 都将创建一个事件。此值是一个位掩码值,因此将其设置为 0x3(0x1 与 0x2 的和)时指示同时记录时间跳跃和时间源更改。

set W32Time=HKLM\SYSTEM\CurrentControlSet\services\W32Time
Reg add "%W32Time%\Parameters" /v "NtpServer" /t REG_SZ /d "%NtpServer%" /f  > nul
Reg add "%W32Time%\Parameters" /v "Type" /t REG_SZ /d "%Type%" /f  > nul
Reg add "%W32Time%\TimeProviders\NtpClient" /v "Enabled" /t REG_DWORD /d "%Enabled%" /f  > nul
Reg add "%W32Time%\TimeProviders\NtpClient" /v "CrossSiteSyncFlags" /t REG_DWORD /d "%CrossSiteSyncFlags%" /f  > nul
Reg add "%W32Time%\TimeProviders\NtpClient" /v "ResolvePeerBackoffMinutes" /t REG_DWORD /d "%ResolvePeerBackoffMinutes%" /f  > nul
Reg add "%W32Time%\TimeProviders\NtpClient" /v "ResolvePeerBackoffMaxTimes" /t REG_DWORD /d "%ResolvePeerBackoffMaxTimes%" /f  > nul
Reg add "%W32Time%\TimeProviders\NtpClient" /v "SpecialPollInterval" /t REG_DWORD /d "%SpecialPollInterval%" /f  > nul
Reg add "%W32Time%\TimeProviders\NtpClient" /v "EventLogFlags" /t REG_DWORD /d "%EventLogFlags%" /f  > nul
sc config W32Time start= auto  > nul
net start W32Time > nul 2>&1
EXIT

添加新评论

本站现已启用评论投票,被点踩过多的评论将自动折叠。与本文无关评论请发留言板。请不要水评论,谢谢。首次在本站评论请静待审核。

评论列表