58

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

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

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

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

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

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

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

6 ответов6

74

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

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.

15

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

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

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

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

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

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

7

Я старался:

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' работает на всех этих разных платформах, если у вас запущены нужные сервисы.

3

Использование:

net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"0.it.pool.ntp.org 1.it.pool.ntp.org 2.it.pool.ntp.org 3.it.pool.ntp.org"
net start w32time
w32tm /config /update
w32tm /resync /rediscover

Пример файла .bat находится по адресу https://gist.github.com/thedom85/dbeb58627adfb3d5c3af.

Я также рекомендую эту программу: http://www.timesynctool.com/

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .