Вопрос или проблема
Мне нужно проверить текующую конфигурацию NTP на некоторых системах Windows. В идеале, я хотел бы сделать это через командную строку, а не переходить через экраны конфигурации.
(Я работаю на нескольких разных версиях ОС, и экраны конфигурации, как правило, не всегда находятся в одном и том же месте в разных версиях.)
Я надеюсь найти быструю, запоминающуюся команду, которую я могу просто ввести в консоль CMD, чтобы получить результат. Пакетный файл, который я могу носить с собой, также подойдет.
В частности, мне нужно следующее:
- Показать, настроена ли система на получение времени с NTP-сервера.
- Показать NTP-сервер(ы), с которых система получает время.
- Показать время последней синхронизации.
- Показать текущее время на системе.
Какие команды необходимы для достижения этих результатов?
Ищу решение, совместимое с Windows XP, 7, Server 2003 и Server 2008.
В командной строке введите
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
Это отвечает на ваш последний вопрос:
Откройте командную строку и введите точно:
w32tm /stripchart /computer:NTPServerNameOrIP /dataonly /samples:x
(сколько результатов вы хотите получить)
Это возвращает время и разницу по времени с NTP-сервера. Если возвращается время с ошибкой: 0x80072746, то это не ваш NTP-сервер.
Пример команды ниже:
Я пробовал:
w32tm /query /status
Я получил:
Команда /query неизвестна.
На другой машине я получил:
Произошла следующая ошибка: Служба не была запущена. (0x80070426)
Затем я попробовал:
reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time
Я получил:
ERROR: Система не смогла найти указанный ключ или значение реестра.
Затем я попробовал:
net time /querysntp
Я получил:
Этот компьютер в настоящее время не настроен на использование конкретного SNTP-сервера.
На другой машине я получил страницу помощи, где также сказано:
Опции /QUERYSNTP и /SETSNTP устарели. Пожалуйста, используйте w32tm.exe для настройки службы времени Windows.
Итак, по сути, служба не работала. Следуя этим инструкциям, я сделал:
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 не запускается автоматически после перезагрузки, это может быть связано с ее настройками запуска, как описано здесь: в зависимости от вашей версии Windows, возможно, она настроена на запуск только при присоединении к домену. Вы можете проверить с помощью:
sc qtriggerinfo w32time
Если она настроена на запуск при присоединении к домену, и у вас нет настроенного домена на вашей машине, служба не запустится и не установит время. Вероятно, она не присоединяется к домену, потому что вы этого не хотите. В любом случае, просто измените триггер, который запускает ее. Например, чтобы запускать, когда машина подключена к сети (и, следовательно, может получить доступ к серверу), выполните:
sc triggerinfo w32time start/networkon stop/networkoff
Из командной строки вы можете получить информацию следующим образом:
reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters
reg QUERY [\\machine\]HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config
Похоже, этого должно быть достаточно, чтобы начать двигаться в этом направлении, если я правильно понял ваш вопрос. Насколько я знаю, команда ‘reg’ работает на всех этих разных платформах, если у вас запущены правильные службы.
Используйте:
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/
Обратите внимание на командный инструмент w32tm
. Он может настраивать и запрашивать конфигурацию и представлять /stripchart смещения времени с другим компьютером.
Ответ или решение
Чтобы проверить текущую конфигурацию NTP на системах Windows через командную строку, вы можете использовать инструмент w32tm
, который предоставляет все необходимые команды для получения информации о настройках и статусе времени. Ниже представлен детальный план действий, подходящий для различных версий операционной системы Windows, таких как Windows XP, 7, Server 2003 и Server 2008.
Шаги для проверки конфигурации NTP
-
Открытие командной строки:
Чтобы начать, откройте командную строку. Для этого нажмитеWin + R
, введитеcmd
, затем нажмитеEnter
. -
Запрос конфигурации времени NTP:
Введите следующую команду для получения информации о текущей конфигурации NTP:w32tm /query /configuration
Эта команда покажет, настроен ли ваш компьютер для получения времени с NTP-сервера.
-
Проверка статуса синхронизации:
Выполните следующую команду для получения информации о статусе времени:w32tm /query /status
В выводе вы получите такие данные, как:
- Stratum: уровень сервера времени.
- Leap Indicator: индикатор корректировок.
- Precision: точность.
- Last Sync: время последней синхронизации.
- NTP server: сервер, с которого получено время.
- Poll Interval: интервал опроса.
-
Проверка текущего системного времени:
Чтобы отобразить текущее системное время, используйте команду:time /T
Обработка ошибок и подготовка системы
Если при выполнении этих команд вы получаете сообщение об ошибке, такое как "Служба не была запущена" (0x80070426), это может означать, что служба Windows Time (W32Time) не запущена. Чтобы это исправить, выполните следующие действия:
-
Перерегистрируйте службу времени W32Time:
w32tm /unregister w32tm /register
-
Запустите службу времени:
net start w32time
-
Настройте NTP сервер (замените
NTPServerNameOrIP
на адрес вашего NTP-сервера):w32tm /config /manualpeerlist:NTPServerNameOrIP /syncfromflags:manual /reliable:YES /update
-
Обновите конфигурацию и синхронизируйтесь:
w32tm /resync
Пример пакетного файла (batch file)
Для удобства вы можете создать пакетный файл, который можно запускать на различных системах. Просто создайте текстовый файл с расширением .bat
и вставьте в него следующий код:
@echo off
w32tm /query /configuration
w32tm /query /status
time /T
pause
Сохраните файл и запустите его с правами администратора.
Заключение
Используя описанные команды и методы, вы сможете эффективно проверять и настраивать конфигурацию NTP на системах Windows через командную строку. Это позволит вам избежать необходимости в навигации по графическим меню, что особенно полезно при работе с различными версиями операционных систем.