Налаштування часового поясу в Windows з командного рядка і PowerShell

В якості одного з базових параметрів часу, крім власне, часу і дати, в усіх комп'ютерних системах є поняття часового поясу (Time zone). Для коректного відображення часу в системі, часовий пояс повинен бути встановлений відповідно до географічним розташуванням комп'ютера.

В ОС сімейства Windows найпростіше змінити часовий пояс безпосередньо з графічного інтерфейсу, клацнувши по значку годин в системному треї і вибравши пункт Change date and time settings (Налаштування дати і часу). Далі потрібно натиснути на кнопку Change Time Zone (Змінити часовий пояс), вибрати зі списку доступних часових поясів відповідний і зберегти зміни.

Порада. Вікно настройки часу також можна викликати командою timedate.cpl.

У Windows 10 вікно зміни настройки часового поясу перенесено в додаток Параметри (Час і мова -> Дата і час). Викликати його, можна клацнувши ПКМ по значку з годинником і вибравши в меню Налаштування часу і дати.

У Windows змінити часовий пояс можна також і з командою рядка або консолі PowerShell. Конкретний спосіб залежить від використовуваної версії Windows. Розглянемо можливі варіанти.

зміст:

  • Право на зміну часового поясу
  • Зміна часового поясу в Windows 10, 8.1 і 7 утиліта TZUtil
  • Управління годинним поясом з консолі PowerShell
  • Автоматизація зміни часового поясу з допомогою Powershell
  • Зміна часового поясу в Windows XP з командного рядка

Зазначеними способами доведеться змінити часовий пояс Windows в регіонах, які переходять в інші часові пояси 26 жовтня 2014 під час переходу Росії на зимовий час.

Право на зміну часового поясу

Зміна часового поясу за замовчуванням не вимагає від користувача наявності адміністративних прав (на відміну від зміни часу / дати). Змінити цю поведінку можна за допомогою локальних політики безпеки (Local Security Settings - secpol.msc). Цікавить нас настройка знаходиться в розділі Security Settings -> Local Policy -> User Rights Assignment (Параметри безпеки -> Локальні політики -> Призначення прав користувача). політика називається Change the time zone (Зміна часового поясу). Як ви бачите, на даний момент змінити часовий пояс на комп'ютері може сама система, адміністратори і всі пересічні користувачі. Щоб заборонити звичайним користувачам самим змінювати часовий пояс, необхідно в цій політиці видалити Users зі списку облікових записів.

Зміна часового поясу в Windows 10, 8.1 і 7 утиліта TZUtil

Для зміни часового поясу в ОС Windows 10 / 8.1 / 7, Windows Server 2016/2012 R2 / 2008 R2 використовується спеціальна утиліта командного рядка  tzutil.exe (Windows Time Zone Utility), вперше з'явилася в Windows 7 (на Vista / Server 2008 встановлюється у вигляді оновлення окремих програмного забезпечення KB 2556308). Виконуваний файл утиліти зберігається в каталозі% WINDIR% \ System32.

Розберемося з можливостями і особливостями використання утиліти TZUtil.

Отже, запустіть командний рядок (cmd.exe). Щоб дізнатися поточний часовий пояс і його ідентифікатор (TimeZoneID), виконайте команду:

tzutil / g

В даному прикладі Russian Standard Time це ідентифікатор поточного часового поясу:

Виведемо список всіх часових поясів з їх назвою і ідентифікаторами так:

tzutil / l

Dateline Standard Time
UTC-11
Aleutian Standard Time
Hawaiian Standard Time
Marquesas Standard Time
Alaskan Standard Time
UTC-09
UTC-08
Pacific Standard Time (Mexico)
Pacific Standard Time
US Mountain Standard Time
Mountain Standard Time
Mountain Standard Time (Mexico)
Central Standard Time (Mexico)
Canada Central Standard Time
Central America Standard Time
Central Standard Time
Easter Island Standard Time
SA Pacific Standard Time
Eastern Standard Time
Cuba Standard Time
Haiti Standard Time
US Eastern Standard Time
Turks And Caicos Standard Time
Eastern Standard Time (Mexico)
Paraguay Standard Time
Atlantic Standard Time
SA Western Standard Time
Venezuela Standard Time
Central Brazilian Standard Time
Pacific SA Standard Time
Newfoundland Standard Time
Tocantins Standard Time
E. South America Standard Time
Argentina Standard Time
Greenland Standard Time
SA Eastern Standard Time
Montevideo Standard Time
Magallanes Standard Time
Bahia Standard Time
Saint Pierre Standard Time
UTC-02
Mid-Atlantic Standard Time
Azores Standard Time
Cape Verde Standard Time
UTC
GMT Standard Time
Morocco Standard Time
Greenwich Standard Time
W. Europe Standard Time
Central Europe Standard Time
Romance Standard Time
Central European Standard Time
W. Central Africa Standard Time
Sao Tome Standard Time
Jordan Standard Time
GTB Standard Time
Middle East Standard Time
FLE Standard Time
Namibia Standard Time
Syria Standard Time
Israel Standard Time
Egypt Standard Time
Kaliningrad Standard Time
E. Europe Standard Time
West Bank Standard Time
Libya Standard Time
South Africa Standard Time
Sudan Standard Time
Arabic Standard Time
Arab Standard Time
Belarus Standard Time
Russian Standard Time
E. Africa Standard Time
Turkey Standard Time
Iran Standard Time
Arabian Standard Time
Astrakhan Standard Time
Azerbaijan Standard Time
Caucasus Standard Time
Russia Time Zone 3
Mauritius Standard Time
Saratov Standard Time
Georgian Standard Time
Afghanistan Standard Time
West Asia Standard Time
Ekaterinburg Standard Time
Pakistan Standard Time
India Standard Time
Sri Lanka Standard Time
Nepal Standard Time
Central Asia Standard Time
Bangladesh Standard Time
Omsk Standard Time
Myanmar Standard Time
SE Asia Standard Time
Altai Standard Time
North Asia Standard Time
N. Central Asia Standard Time
Tomsk Standard Time
W. Mongolia Standard Time
China Standard Time
North Asia East Standard Time
Singapore Standard Time
W. Australia Standard Time
Taipei Standard Time
Ulaanbaatar Standard Time
North Korea Standard Time
Aus Central W. Standard Time
Tokyo Standard Time
Korea Standard Time
Transbaikal Standard Time
Yakutsk Standard Time
Cen. Australia Standard Time
AUS Central Standard Time
E. Australia Standard Time
Vladivostok Standard Time
West Pacific Standard Time
AUS Eastern Standard Time
Tasmania Standard Time
Lord Howe Standard Time
Magadan Standard Time
Bougainville Standard Time
Norfolk Standard Time
Sakhalin Standard Time
Central Pacific Standard Time
Russia Time Zone 10
Russia Time Zone 11
New Zealand Standard Time
UTC + 12
Kamchatka Standard Time
Fiji Standard Time
Chatham Islands Standard Time
UTC + 13
Tonga Standard Time
Samoa Standard Time
Line Islands Standard Time

Якщо ви хочете швидко знайти вивести всі доступні часові пояси, наприклад, із зсувом UTC +2, виконайте команду:

tzutil / l | find / I "utc + 02"

Змінимо поточний часовий пояс (UTC + 03: 00) Москва, Санкт-Петербург, Волгоград - (Russian Standard Time) на (UTC + 04: 00) Іжевськ, Самара (Russia Time Zone 3). Для цього потрібно вказати ідентифікатор часового поясу.

tzutil / s "Russia Time Zone 3"

Перевіримо, що пояс змінився іншим способом:

reg query HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation

Щоб відключити перехід на літній час для конкретного пояса, потрібно вказати ідентифікатор часового поясу з суфіксом _dstoff, наприклад

tzutil / s "Pacific Standard Time_dstoff"

Після виконання даної команди ви зміните часовий пояс комп'ютер і відключіть сезонне переведення годинників.

Також ви можете вивести інформацію про часові пояси і настройках сезонного переведення годинників так:

w32tm / tz

Часовий пояс: Поточний: TIME_ZONE_ID_UNKNOWN Зрушення: -180мін (UTC = LocalTime + Bias)
[Зимовий час: "RTZ 2 (зима)" Зрушення: 0мін Дата: (не вказано)]
[Літній час: "RTZ 2 (літо)" Зрушення: -60мін Дата: (не вказано)]

Управління годинним поясом з консолі PowerShell

Отримати настройки поточного часового поясу можна і з консолі PowerShell, виконайте команду

[TimeZoneInfo] :: Local

або

Get-TimeZone

Id: Ekaterinburg Standard Time
DisplayName: (UTC + 05: 00) Єкатеринбург
StandardName: RTZ 4 (зима)
DaylightName: RTZ 4 (літо)
BaseUtcOffset: 5:00:00
SupportsDaylightSavingTime: True

Щоб подивитися всі можливі часові пояси, доступні в Windows можна використовувати команду Powershell:

[System.TimeZoneInfo] :: GetSystemTimeZones ()
або
Get-TimeZone -ListAvailable

Для зміни часового поясу з PowerShell, виконайте команду:

Set-TimeZone -Name "Astrakhan Standard Time"

Автоматизація зміни часового поясу з допомогою Powershell

Розглянемо універсальний Powershell скрипт, який дозволяє змінити часовий пояс на будь-якому комп'ютері (скрипт передбачає, що у вашій мережі до сих пір присутні комп'ютери з Windows XP / Windows Server 2003). Цей скрипт можна призначити через групові політики на всі комп'ютери домену / певні організаційні контейнери (OU). Скрипт визначає версію ОС і, якщо це Windows Vista або вище, для зміни часового поясу використовується команда tzutil.exe, в іншому випадку - використовується варіант зміни пояса через RunDLL32.exe для Windows XP.

$ TmZone = "Russian Standard Time"
$ WinOSVerReg = Get-Item "HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion"
$ WinOSVer = $ WinOSVerReg.GetValue ( "CurrentVersion")
if ($ WinOSVer -GE 6)
tzutil.exe / s $ tmZone
Else
$ Param = "/ c Start '" Change tmZone' "/ MIN% WINDIR% \ System32 \ Control.exe TIMEDATE.CPL ,, / Z"
$ Param + = $ tmZone
$ Proc = [System.Diagnostics.Process] :: Start ( "CMD.exe", $ param)

Зміна часового поясу в Windows XP з командного рядка

Примітка. Ще раз нагадуємо, що на даний момент часу підтримка Windows XP припинена, тому настійно рекомендуємо перейти на більш сучасну версію ОС.

У Windows інформація про значення поточної годинної зони зберігається в гілці реєстру

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation.

У нашому випадку, наприклад, видно, що в даний момент використовується годинна зона -  Ekaterinburg Standard Time.

Цю ж інформацію можна отримати таким запитом:

reg query HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation

Список доступних часових поясів в Windows XP / Windows Server 2003 зберігається в гілці реєстру HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Time Zones.

Щоб змінити поточний часовий пояс на московський (GMT + 03: 00 -Moscow, St. Petersburg, Volgograd), скористаємося командою:

RunDLL32.exe shell32.dll, Control_RunDLL timedate.cpl ,, / Z Russian Standard Time

або:

Control.exe TIMEDATE.CPL ,, / Z Russian Standard Time

Перевіримо, що часовий пояс змінився:

reg query HKLM \ SYSTEM \ CurrentControlSet \ Control \ TimeZoneInformation