Синхронизация времени windows через bat файл

Синхронизация времени с корректировкой CMD/BAT Решение и ответ на вопрос 1973581

2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

1

Синхронизация времени с корректировкой

03.05.2017, 16:53. Показов 23256. Ответов 20


Здравствуйте сам я в программировании профан, но реалии жизни вынуждают. Вот решил обратиться к специалистам.
Суть моей проблемы в следующем: как с помощью (CMD/BAT) синхронизировать системное время на компьютере с сервером ntp21.vniiftri.ru (89.109.251.21) и прибавить к нему 5 секунд после синхронизации (5 секунд это для примера, нужно будет подбирать данный параметр опытным путём)? Корректировка не будет превышать 10 секунд.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Garry Galler

Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

04.05.2017, 00:49

2

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
@echo off
::<------------------------------------->
:: COPYRIGTH(C) Garry Galler, 2017
:: change_time: смена системного времени посредством указания смещения в секундах от текущего
:: NB!: скрипт не учитывает переход нового времени за границы 23:59:59
:: в этом случае time просто выдаст ошибку
:: батник сохранить в кодировке OEM866
:: Для восстановления правильного времени просто не указывайте offset
::<------------------------------------->
set server=ntp2.stratum2.ru                    & :: сервер для синхронизации
::>nul net stop w32time                          & :: остановка службы времени, чтобы после реконфигурации она подтянула новые параметры
>nul w32tm /config /manualpeerlist:%server%    & :: конфигурация синхронизации
>nul w32tm /config /syncfromflags:manual       & :: ручной режим - не знаю нужно ли
::2>w32tm  /config /largephaseoffset:0         & :: конфигурация максимально допустимого отставания в мск
2>nul net start w32time                        & :: запуск службы времени с новыми параметрами 
>nul  w32tm /config /update                    & :: для смены параметров без остановки службы времени
w32tm /resync                                  & :: синхронизация с указанным сервером
echo ============================
echo сервер синхронизации:
w32tm /query /source
echo ============================
 
set /p offset=[ENTER the offset in seconds]:
if "%offset%"=="" (set /a offset=0)
 
echo ============================
echo ТЕКУЩЕЕ ВРЕМЯ:%time%
echo ============================
set now=%time: =0%
for /f "tokens=1-3 delims=/-:., " %%a in ( "%now%" ) do (
    set hours=%%a   & rem часы
    set minutes=%%b & rem минуты
    set seconds=%%c & rem секунды
)
 
set /a all_seconds= (hours*3600) + (minutes*60) + seconds
echo (%hours% * 3600) + (%minutes% * 60) + %seconds% = %all_seconds%
set /a new_seconds=all_seconds + offset
echo %all_seconds% + %offset% = %new_seconds%
 
set /a seconds = %new_seconds%
set /a hours = seconds/3600 
set /a minutes = (seconds - (hours*3600))/60
set /a seconds = (seconds - (hours*3600) - (minutes*60))
 
set new_time=%hours%:%minutes%:%seconds%
echo ============================
echo НОВОЕ ВРЕМЯ: %new_time%
echo ============================
echo time before: %time%
echo time new:    %new_time%
time %new_time%
echo time after:  %time%
pause&exit /b

——————————
Updated.
Изменил блок синхронизации. Чтобы новый сервер подтягивался службой времени ее нужно либо останавливать и после реконфигурации перезапускать, либо использовать параметр /update в w32tm.



2



2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

04.05.2017, 07:59

 [ТС]

3

Спасибо, всё работает как нужно. С некоторыми параметрами (служб) поэкспериментирую.

Добавлено через 3 часа 59 минут
А как добавить не целые секунды, а с десятыми долями?



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

04.05.2017, 10:35

4

Цитата
Сообщение от lapin9126
Посмотреть сообщение

как добавить не целые секунды, а с десятыми долями?

Просто добавить доли не получится — cmd работает только с целыми числами.
Поэтому нужно формулу расчета времени переводить на миллисекунды — тогда и итоговое время будет с миллисекундами.
Немного попозже попробую перевести.



0



2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

04.05.2017, 10:42

 [ТС]

5

Заранее благодарен вам за оказанную помощь. Без вас я бы ни за что не не осилил этот вопрос. Если в VBA хоть что-то понятно, то в (CMD/BAT) для меня просто набор знаков



0



Garry Galler

Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

04.05.2017, 10:51

6

В принципе, если вам точный перевод времени не нужен — достаточно просто к итоговой строке времени

Windows Batch file
1
set new_time=%hours%:%minutes%:%seconds%

добавить нужное число миллисекунд

Windows Batch file
1
set new_time=%hours%:%minutes%:%seconds%,25   :: 25 миллисекунд



1



lapin9126

2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

04.05.2017, 11:27

 [ТС]

7

Спасибо, всё гениальное-просто!!!!!!

Добавлено через 22 минуты
Для корректного суммирования поменял параметр

Windows Batch file
1
set now=%time: =0%

на

Windows Batch file
1
set now=%time%



0



Garry Galler

Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

04.05.2017, 12:21

8

Цитата
Сообщение от lapin9126
Посмотреть сообщение

Для корректного суммирования поменял параметр

А вот здесь я не понял :-) Здесь делается замена возможного пробела в числах на 0 (пробел вместо ведущего ноля может появляться во времени до 10 утра).
————————————
Формулу на миллисекунды на перевел, однако подстановка результата дает странный эффект:
Ввожу 1500 миллисекунд.

Код

============================
[ENTER the offset in milliseconds]:1500
============================
ТЕКУЩЕЕ ВРЕМЯ:12:02:59,70
============================
(12    * 3600 * 1000) + (02  * 60 * 1000) + (59  * 1000) + 70 = 43379070
43379070 + 1500 = 43380570
============================
НОВОЕ ВРЕМЯ: 12:3:0,57
============================
time before: 12:02:59,70
time new:    12:3:0,57
time after:  12:03:00,05

Windows Batch file
1
2
3
4
5
6
7
set /a milliseconds = %new_milliseconds%
set /a hours=milliseconds/3600000 
set /a minutes=(milliseconds - (hours*3600*1000))/60/1000
set /a seconds=(milliseconds - (hours*3600*1000) - (minutes*60*1000))/1000
set /a milliseconds=milliseconds - (hours*3600*1000) - (minutes*60*1000) - seconds*1000
 
set new_time=%hours%:%minutes%:%seconds%,%milliseconds:~0,2%

Формула переводит все в миллисекунды, суммирует и конвертирует обратно в часыминутысекундымиллисекунды. И вроде все делает правильно.
Новое время должно быть 12:3:0,57, однако time делает из 57 сотых => 5 сотых. И так постоянно.
Где тут косяк :-)?



0



Любознательный

3223 / 863 / 231

Регистрация: 10.03.2016

Сообщений: 2,039

04.05.2017, 12:30

9

Garry Galler,

Цитата
Сообщение от Garry Galler
Посмотреть сообщение

Где тут косяк :-)?

Возможно, не причина, но тем не менее…на первый взгляд:

Цитата
Сообщение от Garry Galler
Посмотреть сообщение

(12 * 3600 * 1000)

Вот здесь, какие-такие единицы мы получим?
ч*мин*мсек



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

04.05.2017, 13:50

10

YuS_2,
Ну здесь — (12 * 3600 * 1000) — должно получиться целое число миллисекунд равное 12 часам=43200000.
Разве нет?

Добавлено через 5 минут
А вот с прибавлением

+ 70

похоже косяк. Там же доли: 70 это 0.7, то есть 700 мск.

Добавлено через 44 минуты
А еще косяк, что числа типа 08 и 09 будут cmd забракованы из-за ведущего ноля. Но это понятно как исправить: добавлением единицы и вычитанием 100.



0



Любознательный

3223 / 863 / 231

Регистрация: 10.03.2016

Сообщений: 2,039

04.05.2017, 13:55

11

Цитата
Сообщение от Garry Galler
Посмотреть сообщение

Разве нет?

Да, верно … это я тут по диагонали, одним глазом форум читаю
3600 равно 60*60, вот где секунды потерялись у меня



0



2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

04.05.2017, 14:12

 [ТС]

12

Это я не вовремя проверял, надо утром с 8 до 10 тестировать.



0



Garry Galler

Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

04.05.2017, 14:25

13

lapin9126,
Просто замените в коде цикл на этот:

Windows Batch file
1
2
3
4
5
6
set now=%time: =0%
for /f "tokens=1-3 delims=/-:., " %%a in ( "%now%" ) do (
    set /a hours=1%%a-100        & rem часы
    set /a minutes=1%%b-100      & rem минуты
    set /a seconds=1%%c-100      & rem секунды
)

Здесь ненужные ведущие ноли будут убираться и ошибки не случится.
Миллисекунды добавляйте как вы это делаете сейчас — просто помните, что на самом деле вы добавляете не целое число, а сотые доли от секунды.
———————————-
Что касается формулы перевода в миллисекунды: мне кажется тут бессмысленно бодаться с time — она воспринимает целое число миллисекунд, которое точно высчитывает формула, как сотую долю от секунды — то есть автоматом это число делит на 100, вместо того, чтобы принять то, что ей дают как готовый отформатированный набор чисел.



0



lapin9126

2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

04.05.2017, 14:44

 [ТС]

14

Я правильно понял конечный код должен быть такой:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
@echo off
::<------------------------------------->
:: COPYRIGTH(C) Garry Galler, 2017
:: change_time: смена системного времени посредством указания смещения в секундах от текущего
:: NB!: скрипт не учитывает переход нового времени за границы 23:59:59
:: в этом случае time просто выдаст ошибку
:: батник сохранить в кодировке OEM866
:: Для восстановления правильного времени просто не указывайте offset
::<------------------------------------->
set server=ntp2.stratum2.ru                    & :: сервер для синхронизации
::>nul net stop w32time                          & :: остановка службы времени, чтобы после реконфигурации она подтянула новые параметры
>nul w32tm /config /manualpeerlist:%server%    & :: конфигурация синхронизации
>nul w32tm /config /syncfromflags:manual       & :: ручной режим - не знаю нужно ли
::2>w32tm  /config /largephaseoffset:0         & :: конфигурация максимально допустимого отставания в мск
2>nul net start w32time                        & :: запуск службы времени с новыми параметрами 
>nul  w32tm /config /update                    & :: для смены параметров без остановки службы времени
w32tm /resync                                  & :: синхронизация с указанным сервером
echo ============================
echo сервер синхронизации:
w32tm /query /source
echo ============================
 
set /p offset=[ENTER the offset in seconds]:
if "%offset%"=="" (set /a offset=0)
 
echo ============================
echo ТЕКУЩЕЕ ВРЕМЯ:%time%
echo ============================
set now=%time: =0%
for /f "tokens=1-3 delims=/-:., " %%a in ( "%now%" ) do (
    set /a hours=1%%a-100        & rem часы
    set /a minutes=1%%b-100      & rem минуты
    set /a seconds=1%%c-100      & rem секунды
)
 
set /a all_seconds= (hours*3600) + (minutes*60) + seconds
echo (%hours% * 3600) + (%minutes% * 60) + %seconds% = %all_seconds%
set /a new_seconds=all_seconds + offset
echo %all_seconds% + %offset% = %new_seconds%
 
set /a seconds = %new_seconds%
set /a hours = seconds/3600 
set /a minutes = (seconds - (hours*3600))/60
set /a seconds = (seconds - (hours*3600) - (minutes*60))
 
set new_time=%hours%:%minutes%:%seconds%,25   & :: 25 миллисекунд
echo ============================
echo НОВОЕ ВРЕМЯ: %new_time%
echo ============================
echo time before: %time%
echo time new:    %new_time%
time %new_time%
echo time after:  %time%
pause&exit /b



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

04.05.2017, 15:24

15

Да, пока это все что я могу предложить.
P.S. Пробелы в присвоениях переменных —

до и после знака равно

— лучше убрать. Они в батниках как минимум нежелательны, как максимум приводят к ошибкам, хотя при сложении чисел вроде не влияют. Это у меня python code style уже мешает батники правильно писать :-)



0



2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

05.05.2017, 04:22

 [ТС]

16

Хорошо, подправлю. Еще раз благодарю за помощь.

Добавлено через 12 часов 15 минут
Протестировал сегодня утром с 8 часов. 08 в CMD считает 8-ричной системой счисления и вот что получается. Надо искать альтернативный метод.

Отправка команды синхронизации на локальный компьютер
Команда выполнена успешно.
============================
сервер синхронизации:
ntp2.stratum2.ru
============================
[ENTER the offset in seconds]:5
============================
ТЕКУЩЕЕ ВРЕМЯ: 8:19:00,15
============================
(08 * 3600) + (19 * 60) + 00 = 1140
1140 + 5 = 1145
============================
НОВОЕ ВРЕМЯ: 0:19:5
============================
time before: 8:19:00,16
time new: 0:19:5
time after: 0:19:04,99
Для продолжения нажмите любую клавишу . . .



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

05.05.2017, 15:10

17

lapin9126,

Синхронизация времени с корректировкой

Откуда у вас ведущий ноль, если батник его исключает операций вычитания 108 — 100=8?



0



lapin9126

2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

05.05.2017, 15:47

 [ТС]

18

Да кто его знает. Может в коде что-то не так. Спасибо за помощь. Пытаюсь на VBS написать.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
@echo off
::<------------------------------------->
:: COPYRIGTH(C) Garry Galler, 2017
:: change_time: смена системного времени посредством указания смещения в секундах от текущего
:: NB!: скрипт не учитывает переход нового времени за границы 23:59:59
:: в этом случае time просто выдаст ошибку
:: батник сохранить в кодировке OEM866
:: Для восстановления правильного времени просто не указывайте offset
::<------------------------------------->
::set offset=6                                   & :: секунды коррекции после подбора
set server=ntp2.stratum2.ru                    & :: сервер для синхронизации
::>nul net stop w32time                        & :: остановка службы времени, чтобы после реконфигурации она подтянула новые параметры
>nul w32tm /config /manualpeerlist:%server%    & :: конфигурация синхронизации
>nul w32tm /config /syncfromflags:manual       & :: ручной режим - не знаю нужно ли
::2>w32tm  /config /largephaseoffset:0         & :: конфигурация максимально допустимого отставания в мск
2>nul net start w32time                        & :: запуск службы времени с новыми параметрами 
>nul  w32tm /config /update                    & :: для смены параметров без остановки службы времени
w32tm /resync                                  & :: синхронизация с указанным сервером
echo ============================
echo сервер синхронизации:
w32tm /query /source
echo ============================
 
set /p offset=[ENTER the offset in seconds]: & :: секунды коррекции методом подбора
if "%offset%"=="" (set /a offset=0)
 
echo ============================
echo ТЕКУЩЕЕ ВРЕМЯ:%time%
echo ============================
set now=%time: =0%
for /f "tokens=1-3 delims=/-:., " %%a in ( "%now%" ) do (
    set hours=%%a   & rem часы
    set minutes=%%b & rem минуты
    set seconds=%%c & rem секунды
)
 
set /a all_seconds=(hours*3600) + (minutes*60) + seconds
echo (%hours% * 3600) + (%minutes% * 60) + %seconds% = %all_seconds%
set /a new_seconds=all_seconds + %offset%
echo %all_seconds% + %offset% = %new_seconds%
 
set /a seconds=%new_seconds%
set /a hours=seconds/3600 
set /a minutes=(seconds - (hours*3600))/60
set /a seconds=(seconds - (hours*3600) - (minutes*60))
 
set new_time=%hours%:%minutes%:%seconds%
echo ============================
echo НОВОЕ ВРЕМЯ: %new_time%
echo ============================
echo time before: %time%
echo time new:    %new_time%
time %new_time%
echo time after:  %time%
pause&exit /b



0



Эксперт Python

5403 / 3827 / 1214

Регистрация: 28.10.2013

Сообщений: 9,554

Записей в блоге: 1

05.05.2017, 15:59

19

lapin9126,
Ну вы же используете

первую версию кода

, которая не содержит исправления ошибки ведущего нуля.
Вот в этом посте вы же сами прикрепили

правильную версию кода

, в которую внесены мои поправки переменных. И эту версию вы почему-то НЕ используете…



0



2 / 2 / 0

Регистрация: 19.10.2015

Сообщений: 176

05.05.2017, 16:17

 [ТС]

20

Прошу прощения, с утра наверно еще не проснулся и не то скопировал.



0



Выкладываю bat-скрипт для быстрой настройки ntp-клиента Windows. Написал его для себя и решил поделиться.

Принцип работы:

  • запускаем скрипт от имени администратора (актуально для семейства Windows старше XP).
  • вводим адрес ntp сервера который хотим задать.
  • вводим время периода обновлений времени в минутах.
  • ждем выполнения, и наблюдаем результат выполнения в консоли.

Код bat файла

@echo off
rem Скрипт настройки NTP клиента Windows
echo Скрипт настройки NTP клиента Windows
echo.

rem -- ввод адреса NTP сервера
set /p ntp_server="Введите адрес NTP сервера: "

rem -- ввод периуда обновления времени в минутах
set /p ntp_update="Задайте периуд обновления (min): "

rem -- задаем в качестве сервера по умолчанию 0 элемент
echo.
echo =======================================================
echo Задаем в качестве сервера по умолчанию 0 элемент
REG ADD HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionDateTimeServers /ve /t REG_SZ /d 0 /f

rem -- редактируем значение сервера обновлений из списка под новером 0
echo.
echo =======================================================
echo Изменяем текущие значение сервера обновлений списка серверов на %ntp_server%
REG ADD HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionDateTimeServers /v 0 /t REG_SZ /d %ntp_server% /f

rem -- включаем NTP клиент
echo.
echo =======================================================
echo Включаем NTP клиент
REG ADD HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters /v Type /t REG_SZ /d NTP /f

rem -- задаем текущий сервер обновления
echo.
echo =======================================================
echo Задаем текущий сервер обновления %ntp_server%
REG ADD HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters /v NtpServer /t REG_SZ /d %ntp_server%,0x9 /f

rem -- устонавливаем периуд обновления
echo.
echo =======================================================
echo Устонавливаем периуд обновления %ntp_update% минут
rem -- перевод времени в секунды
set /a ntp_update*=60
REG ADD HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClient /v SpecialPollInterval /t REG_DWORD /d %ntp_update% /f

rem -- задаем службе времени автоматический запуск
echo.
echo =======================================================
echo Задаем службе времени автоматический запуск 
sc config w32time start= auto

rem -- запускаем/перезапускаем незапущеную/зупущеную службу времени 
echo. && echo======================================================= && echo Попытка перезапуска службы времени && echo. && sc stop w32time && PING -n 5 -w 1000 127.0.0.1 >nul && sc start w32time || echo. && echo ======================================================= && echo Попытка запуска службы времени && echo. && sc start w32time 

echo.
pause

Результат работы

image

P.S.: Не забываем выставить в редакторе кодировку создаваемого bat файла в OEM 866 для корректного отображения кириллических символов.

You can’t comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

Rem run as administrator
@echo on & @setlocal enableextensions
@echo =========================
@echo Turn off the time service
net stop w32time
@echo ======================================================================
@echo Set the SNTP (Simple Network Time Protocol) source for the time server
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«
@echo =============================================
@echo … and then turn on the time service back on
net start w32time
@echo =============================================
@echo Tell the time sync service to use the changes
w32tm /config /update
@echo =======================================================
@echo Reset the local computer’s time against the time server
w32tm /resync /rediscover
@endlocal & @goto :EOF

Проверить синхронизируются ли часы локального компьютера с каким-нибудь сервером можно командой

w32tm /query /status

Компьютеры, включенные в домен, по умолчанию синхронизируют свои часы с контроллером домена.

Настройка синхронизации часов

— Проверяем запущена ли «Служба времени»:

C:> services.msc

— Можно запустить вручную, но лучше настроить службу для запуска автоматически. Если в ручную, то:

С:> net start w32time

— Для регистрации, как службы и добавления стандартной конфигурации в реестр:

С:> w32tm /register

— Создаём командный файл timesync.bat, который настроит синхронизацию времени с локальным сервером 10.0.0.85. Скрипт необходимо выполнить с административными правами.

@echo off
rem This will synchronize time with server 10.0.0.85
rem
rem To ensure time service is up run services.msc
rem In Russian it calls "Служба времени Windows"
rem In register:
rem HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters
rem

echo -- This script will synchronize time with server 10.0.0.85. Current status:
w32tm /query /status
w32tm /tz

echo -- Press Ctrl+C if you don't want synchronization or any key otherwise.
pause > null

echo -- Set time server
w32tm /config /manualpeerlist:10.0.0.85 /syncfromflags:manual /reliable:yes /update

echo -- New settings:
w32tm /query /status

echo -- Press any key to exit.
pause > null

и запускаем его на каждом компьютере, где хотим синхронизировать время с сервером. Сам сервер, в свою очередь, можно синхронизировать через Интернет.

Также можно наблюдать текущую разницу во времени с удалённым компьютером:

w32tm /stripchart /computer:10.0.0.85 /samples:3 /dataonly

Раньше вместо w32tm использовалась команда net time.

Соответсвие команд w32tm и net time

w32tm net time
Запрос текущего состояния синхронизации: сервер, расхождение и т.д.
w32tm /query /status net time /querysntp
Принудительная синхронизация часов с сервером 10.0.0.85
w32tm /config /manualpeerlist:10.0.0.85 /syncfromflags:manual /reliable:yes /update net time /setsntp:10.0.0.85
Настройка списка серверов для синхронизации часов
w32tm /config /manualpeerlist:»10.0.0.85 10.0.0.2 ntp0.zenon.net» /syncfromflags:manual /reliable:yes /update net time /setsntp:»10.0.0.85 10.0.0.2 ntp0.zenon.net»

I pulled this out of an email archive from an MCSE friend of mine from 2009, so the information should be fairly close, but may have changed. I have changed roles pretty significantly since then:

Each windows PDC emulator is the domains time server. If the domains are all in the same forest, you just need to sync the root domains PFC with an atomic external time source. If domains are in separate forests (dmz domain for ex) each PDC emulator needs to be set to look the same set of external atomic clocks. off the top of my head, I use these two in my pool of 5 or so.

Time-a.nist.gov
Time-b.nist.gov

On your PDC run the following:

net time /setsntp time-a.nist.gov time-b.nist.gov

You need to make sure udp port 123 is allowed outbound from PDC.
all other servers, workstations should have windows time service started.

If you run the following query on a box having trouble and see it set to

windows.Time.com

or maybe

time.windows.com

you need to reset it to use domain time. Run the same as above with NO time source:

net time /setsntp

An invaluable reskit tool to check domain time is w32tm. Run

W32tm /monitor 

If memory serves, Windows 2012 (?) and above, changed the name of the service from W32tm to W32time, so your mileage may vary.

Lastly, if running VMWare esx, you need to make sure all host esx servers are setup to sync to the same external time servers as your windows boxes, using their NTP.conf file. Make sure all vm’s are running the latest VM tools and set the tools to sync their time with the esx host. I believe you also stop the windows time service so they do not compete but I’d have to verify. This is true for all VM’s but the pdc emulator if running it in a VM. It will not sync with the esx host and should be setup exactly as stated above. Good luck.

Continuing on..
First, I would ask myself..

Do I have PDC (Primary Domain Controller)?

Or, am I just dealing with a bunch of stand-alone workstations on a peer-to-peer network?

You did not state anything about your topology or network.

If you have an NTP server, your clients will connect to it.
Like my good friend stated, you will need to use an NTP relay that your clients connect to.

He stated: On your PDC (or in a peer-to-peer) setup, you would do the following:

net time /setsntp time-a.nist.gov time-b.nist.gov

now, moving over to your clients and other member servers, you would do the same thing with the exception of no time servers given, e.g.

net time /setsntp

as your LAN clients and other member servers will set/synchronize with the PDC several times a day.

So, taking your batch file, I would do something like the following for your PDC (you may also do well to add some SLEEP or PAUSE commands to your Batch File):

@echo off
net time /setsntp time-a.nist.gov time-b.nist.gov
w32tm /query /peers 
net stop w32time
net start w32time
w32tm /resync /nowait
EOF

And then your workstations and other servers (again, you may also do well to add some SLEEP or PAUSE commands to your Batch File):

@echo off
net time /setsntp
w32tm /query /peers 
net stop w32time
net start w32time
w32tm /resync /nowait
EOF

I don’t know how else to explain this to you as he offered how to do this in bite-sized chunks.

Hope this helps.

Синхронизация времени в Windows

Абсолютно банальный пост, но не написать не могу. Как мне казалось, проблемы синхронизации времени уже нигде не существует, ведь каждый комп подключен к интернету. Ха! :) В нашей деревне есть еще организации, где самое точное время показывают часы, висящие над вахтершей бабой Клавой.

001

Наблюдал сегодня своими глазами в небольшой конторе. Парк машин порядка 15 компов. Домена никакого нет. Все компьютеры объеденины в локальную сеть двумя дешевыми китайскими свитчами. Один комп помимо этого имеет подключени к интернету по ADSL. Одмина в конторе нет, точнее он есть, но какой-то приходящий, который там появляется только в день выдачи зарплаты. На всех компах время разное с разбегом в 20 минут. Красота!

Освежим память и расскажем, как сделать порядок в этом вопросе.

И так, сначала условимся на том, что один комп у нас будет выполнять функцию сервера точного времени. Очевидно, что на эту роль лучше всего подходит тот ПК, который уже подключен к внешнему миру. Точное время он будет брать из интернета, а все остальные компы локальной сети будут сверять свои часики с этим ПК по протоколу NTP.

Чтобы просто взять и синхронизировать время с сервером точного времени нужно всего-то в командной строке набрать:

net time \имя_компа_сервера_точного_времени /set

Проще некуда. Если уж совсем лень читать дальше, то можно засунуть эту строку в cmd файл и в автозагрузку запихать. А мы дальше расскажем как сделать всё красиво.

Во-первых определим, какой IP-адрес у нашего сервера точного времени. Для примера пусть будет 192.168.1.1

Открываем командную строку и пишем там следующее:

w32tm /config /syncfromflags:manual /manualpeerlist:192.168.1.1

Здесь мы указываем сервера точного времени нашей локальной сети. Их может быть несколько, тогда все перечисляем через запятую без пробела.

Затем, даем команду

После этого среди всех сервером точного времени указываем приоритетный. В нашем примере он всего один, его и пишем:

net time /setsntp:192.168.1.1

Перезагружаем службу времени Windows

net stop w32time && net start w32time

И синхронизируем

После этих манипуляций комп будет сам синхронизировать время с сервером. Проблема закрыта!

Одмин, не ленись, сделай правильное время на компах!

Ручная синхронизация времени

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-файл: time-sync.zip [242 b] (cкачиваний: 194)

Запускал через командную строку (Dos) на WinXP (x32) SP3 и Win7 (x64) SP1 — всё работает!

*

NTP Servers (серверы точного времени): www.ntp-servers.net

* * *

Настройка сети через командную строку и BAT файл: ravensblade.ru

* * *

Отключаем проверку цифровой подписи драйверов в Windows 7

В меню политик перейдите в раздел:
User Configuration -> Administrative Templates -> System -> Driver Installation
В правой панели найдите пункт ‘Code Signing for Device Drivers’ и дважды щелкните по нему
В появившемся окне выберите ‘Enabled’, а в нижнем меню — ‘Ignore’. Нажмите Ок и перезагрузите компьютер. После перезагрузи и применения политика, в своей Windows 7 вы полностью отключите подписывание драйверов, и сможете установить любые, в том числе, неподписанные драйвера

*

bcdedit.exe /set loadoptions DISABLE_INTEGRITY_CHECKS

bcdedit.exe /set TESTSIGNING ON

© winitpro.ru (08.05.14)

* * *

Проверка файлов Windows 7
cmd — от имени Администратора
sfc /scannow

Запуск средства проверки системных файлов (microsoft.com): support.microsoft.com

* * *

Три десятилетия Windows — История Windows: от 1.0 до 10: www.gazeta.ru (20.11.2015)

* * *

Упрощение анализа дампов памяти windows: geektimes.ru (10.01.18)

_

Возник тут вопрос о том, чтобы синхронизировать время на компьютере сразу после загрузки Windows. Поднял свои архивы, нашел один пакетный файл, который писал еще много лет назад. Он работал, но, как говорится, «время идет», появились новые пожелания. Поэтому файл был полностью переписан.
Для внесения изменений в параметры службы Windows нам нужно ее остановить, внести необходимые изменения и заново запустить. После всего этого выполнить синхронизацию времени. Что данный «батник» и делает.
Интервал обновления изменен на «один раз в сутки» против значения по умолчанию «один раз в неделю». Также убраны ограничения интервалов, дата на компьютере может быть любой, синхронизация все равно будет произведена. Тестировал на разнице в 7 лет. В качестве сервера времени выбран ru.pool.ntp.org.
Ниже код того, что у меня получилось. Можно, конечно, еще добавить команды для добавления задания в планировщик, но, на мой взгляд, это уже лишнее и лучше проделать это руками.

@echo off
net stop w32time

sc config w32time start= auto

reg add HKLMSYSTEMCurrentControlSetservicesW32TimeConfig /v MaxNegPhaseCorrection /t REG_DWORD /d "4294967295" /f
reg add HKLMSYSTEMCurrentControlSetservicesW32TimeConfig /v MaxPosPhaseCorrection /t REG_DWORD /d "4294967295" /f
reg add HKLMSYSTEMCurrentControlSetservicesW32TimeTimeProvidersNtpClient /v SpecialPollInterval /t REG_DWORD /d "86400" /f

net start w32time

w32tm /config /syncfromflags:manual /manualpeerlist:ru.pool.ntp.org
w32tm /config /update
w32tm /resync

exit

Понравилась статья? Поделить с друзьями:
  • Синхронизация времени windows сервер rpc недоступен windows
  • Синхронизация времени windows xp с сервером точного времени
  • Синхронизация времени windows 7 через реестр
  • Синхронизация времени windows 7 командная строка в домене
  • Синхронизация времени windows 10 через командную строку