Как я могу проверить текущую конфигурацию NTP системы?


65

Мне нужно проверить текущую конфигурацию NTP в некоторых системах Windows. В идеале я хотел бы иметь возможность сделать это через командную строку вместо навигации по экранам конфигурации.

(Я работаю над несколькими различными версиями ОС, и экраны конфигурации, как правило, не всегда находятся в одном и том же месте между версиями.)

Я надеюсь найти быструю, запоминающуюся команду, которую я могу просто вставить в консоль CMD, чтобы получить результат. Тем не менее, пакетный файл, который я могу взять с собой, тоже подойдет.

В частности, мне нужно следующее:

  • Показать, настроена ли система на получение времени от NTP-сервера.
  • Показать серверы NTP, с которых система получает время.
  • Показать время последней синхронизации.
  • Показать текущее время в системе.

Какая команда (команды) была бы необходима для достижения этих результатов?

Ищите решение, совместимое с Windows XP, 7, Server 2003 и Server 2008.


Я знаю, чтобы проверить время, вы можете сделать «net time \\ computername», чтобы получить время удаленного компьютера. Я не думаю, что чистое время позволяет просматривать последнюю синхронизацию, хотя ... однако "чистое время?" дает набор опций, так что это как половина того, что вы ищете.
Supercereal

@Kyle Я только что понял, что net time /querysntpпоказывает сервер. Получить остальное может быть сложно.
Изи

3
В Windows 7 net time / querysntp устарела.
Даниэль

Ответы:


82

В командной строке введите

w32tm /query /configuration
w32tm /query /status
Time /T 

w32tm /query /configuration дает вам конфигурацию, которую вы настроили.

w32tm /query /status дает вам такую ​​информацию, как:

  • слой
  • индикатор скачка
  • точность
  • последняя синхронизация
  • NTP сервер
  • интервал опроса

time /T выводит текущее системное время.

Примечание. w32tm /queryВпервые был доступен в клиентских версиях Windows Time для Windows Vista и Windows Server 2008. См. Инструменты и параметры службы времени Windows.


5
Не хорошо на XP. «Команда / запрос неизвестна.»
Изи

В чем разница между time /tвременем, показанным в правом нижнем углу панели задач?
Pacerier

Во-первых, w32tm /query /configurationя получаю «Произошла следующая ошибка: доступ запрещен. (0x80070005)» . Я думаю, что у меня достаточно прав.
Питер Мортенсен

3
Для этого вам нужно находиться в окне команд с повышенными правами.
Филипп Р.

16

Это отвечает на ваш последний вопрос:

Откройте командную строку и введите точно:

w32tm /stripchart /computer:NTPServerNameOrIP /dataonly /samples:x (сколько вы хотите вернуть)

Возвращает время и разницу времени NTP-сервера. Если он возвращает время, ошибка: 0x80072746, то это не ваш NTP-сервер.

Пример команды ниже:

Пример команды


Можете ли вы отформатировать этот ответ?
Ramhound

То, как оно само форматируется, странно. Внесены изменения
Байрон

8

Я пытался:

w32tm /query /status

Я получил:

The command /query is unknown.

В другой машине я получил:

The following error occurred: The service has not been started. (0x80070426)

Тогда я попробовал:

reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time

Я получил:

ERROR: The system was unable to find the specified registry key or value.

Тогда я попробовал:

net time /querysntp

Я получил:

This computer is not currently configured to use a specific SNTP server.

В другой машине я получил страницу помощи, на которой также сказано:

The /QUERYSNTP and /SETSNTP options have been deprecated. Please use w32tm.exe to configure the Windows Time Service.

Так что, в основном, сервис не работал. Следуя этим инструкциям, я сделал:

w32tm /unregister
w32tm /unregister
w32tm /register
net start w32time

Наконец, все вышеперечисленное будет работать. (примечание: если net startне получается, см. ниже) Тогда мне просто нужно было настроить мой ntp ... Я сделал это с:

w32tm /config /manualpeerlist:10.0.0.5 /syncfromflags:manual /reliable:yes /update

следуя инструкциям отсюда , но, возможно, это могло быть так просто, как:

net time /setsntp:10.0.0.5

как указано здесь . (10.0.0.5 - мой локальный NTP-сервер). Если вы не используете локальный NTP-сервер, вы можете использовать общий:

w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /reliable:yes /update

Наконец, вам может потребоваться сделать следующее, что мне не нужно:

w32tm /config /update
w32tm /resync /rediscover

Примечание: если net start w32timeс ошибкой 1290 (Запустить службу не удалось , так как один или несколько услуг , в том же процессе , имеют несовместимые настройки типа службы SID) , а затем выполните действия , описанные здесь :

w32tm /unregister
w32tm /register
sc config w32time type= own
net start w32time

Затем следуйте, как указано выше.


ПРИМЕЧАНИЕ 2: если служба NTP не запускается автоматически при перезагрузке, это может быть связано с ее настройками запуска, как описано здесь : в зависимости от ваших окон, она может быть настроена на запуск только при присоединении к домену. Вы можете проверить с помощью:

sc qtriggerinfo w32time

Если он настроен на запуск при присоединении к домену, и у вас нет настроенного домена на вашем компьютере, он не запустит службу и не установит время. Вероятно, он не присоединяется к домену, потому что вы этого не хотите. В любом случае просто измените, какой триггер запускает его. Например, для запуска, когда машина имеет сеть (и, следовательно, может получить доступ к серверу), выполните:

sc triggerinfo w32time start/networkon stop/networkoff


3

Из командной строки вы можете получить такую ​​информацию:

reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config

Кажется, этого должно быть достаточно, по крайней мере, чтобы двигаться в этом направлении, то есть, если я поняла ваш вопрос. AFAIK, команда 'reg' работает на всех этих разных платформах, если у вас есть нужные сервисы.


Я получил: «ОШИБКА: системе не удалось найти указанный раздел реестра или значение». Оказывается, W32Time не был запущен ...
MSB

Значит " [\\machine\]" означает, что его можно исключить, если на одной машине?
Питер Мортенсен

2

Взгляните на w32tmинструмент командной строки. Он может установить и запросить конфигурацию и сообщить / полосную диаграмму смещения времени с другим компьютером.


1
/queryОпция не доступна на XP.
Изи

5
Попробуй net time /querysntp.
Фран

1
@Fran Это работает. Я надеялся получить одну команду, которая была кроссплатформенной, но, похоже, мне, возможно, придется использовать две разные команды - или написать пакетный файл, который включает определение платформы, чтобы определить, какую команду (команды) нужно выполнить.
Изи

1
@lszi В своих скриптах я проверяю наличие C: \ users. Если я нахожу эту папку, я знаю, что я нахожусь на пост-XP коробке.
Фран

1
@Fran Не могли бы вы написать свой собственный ответ, который включает в себя обе команды? Кроме того, какую команду я бы использовал, чтобы проверить время последней успешной синхронизации для XP?
Изи
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.