Настройка часового пояса в Windows из командной строки, PowerShell и GPO

Настройка часового пояса в Windows из командной строки, PowerShell и GPO

Часовой пояс (Time zone), наряду с временем и датой, это один из критический параметров компьютера. Для корректной работы Windows/прикладных программ и правильного отображения времени в системе, часовой пояс должен быть установлен в соответствии с географическим расположением компьютера. В этой статье мы рассмотрим, как изменить часовой пояс в Windows из графического интерфейса, командной строки, консоли PowerShell и с помощью групповых политик.

В Windows 10 и Windows Server 2019/2016 для настройки времени и часового пояса используется новое окно в приложении (Параметры/Settings). Вы можете установить часовой пояс из графического интерфейса, щелкнув правой кнопкой по значку часов в системном трее и выбрав пункт Adjust date/time (Настройка времени и даты). По умолчанию Windows пытается автоматически выбрать часовой пояс (включена опция Set time zone automatically/Автоматически устанавливать часовой пояс). Вы можете отключить эту опцию и задать нужный часовой пояс вручную, выбрав его в выпадающем списке.

параметры часового пояса windows 10 в приложении параметрыchasovogo-poyasa

Также вы можете вызвать классическое окно настройки времени в Windows, выполнив команду
timedate.cpl
.

windows10 выбор часового пояса

Назначаем права на изменение часового пояса в Windows

По-умолчанию смена часового пояса в Windows 10 не требует от пользователя наличия прав администратора (в отличии от смены времени/даты). Вы можете запретить пользователям менять часовой пояс с помощью локальной политики безопасности (Local Security Settings
secpol.msc
). Интересующая нас настройка находится в разделе Security Settings -> Local Policy -> User Rights Assignment (Параметры безопасности -> Локальные политики -> Назначение прав пользователя). Политика называется Change the time zone (Изменение часового пояса). По умолчанию изменить часовой пояс в Windows 10 может сама система, администраторы и все пользователи. Чтобы запретить простым пользователям самим менять часовой пояс, необходимо удалить Users из списка учетных записей в этой политике.

Изменение часового пояса - политика

В Windows Server право на изменение часового пояса есть только у Local Service и администраторов.

Утилита TZUtil: изменить часовой пояса из командной строки Windows 10

Для смены часового пояса в Windows 11/10/8.1, Windows Server 2019/2016/2012 R2/ используется специальная утилита командной строки tzutil.exe (Windows Time Zone Utility), впервые появившаяся в Windows 7. Исполняемый файл утилиты хранится в каталоге
%WINDIR%System32
.

Разберемся с возможностями и особенностями использования утилиты TZUtil.

Откройте командную строку (
cmd.exe
). Чтобы узнать текущий часовой пояс и его идентификатор (TimeZoneID), выполните команду:

tzutil /g

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

tzutil /g узнать текущий часовой пояс компьютера

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

tzutil /l

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 смещению

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

tzutil /s "Russia Time Zone 3"

tzutil /s задать часовой пояс Russia Time Zone

Текущий часовой пояс хранится в реестре Windows. Вы можете проверить, что он изменился так:

reg query HKLMSYSTEMCurrentControlSetControlTimeZoneInformation

настройки часового пояса в реестре

Чтобы отключить переход на летнее время для конкретного пояса, нужно указать идентификатор часового пояса с суффиксом _dstoff, например

tzutil /s “Pacific Standard Time_dstoff”

Эта команда изменит часовой пояс компьютера и отключите сезонный перевод часов.

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

w32tm /tz

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

w32tm /tz

В Windows XP и Windows Server 2003 для смены часового пояса из командной строки нужно было использовать такие команды:

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

Или:

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

Управление часовым поясом в Windows из PowerShell

Получить настройки текущего часового пояса можно и в консоли PowerShell. Используйте команду:

[TimeZoneInfo]::Local

Или

Get-TimeZone

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

powershell Get-TimeZone

В PowerShell вы можете просмотреть все возможные часовые пояса, доступные в Windows:

[System.TimeZoneInfo]::GetSystemTimeZones()

Или
Get-TimeZone -ListAvailable

Get-TimeZone -ListAvailable

Список часовых поясов довольно большой, чтобы найти название нужного часового пояса, воспользуйтесь фильтром:

Get-TimeZone -ListAvailable | Where-Object {$_.displayname -like "*Samara*"}

Или:

Get-TimeZone -ListAvailable | Where-Object {$_.Id -like "*Russ*"}

фильтр для часовых поясов в powershell

Можно вывести все часовые пояса в алфавитном порядке:

Get-TimeZone -ListAvailable | Select Id | Sort Id

Чтобы изменить текущий часовой пояс из PowerShell, выполните команду

Set-TimeZone -Name "Astrakhan Standard Time"

Настройка часового пояса через GPO

Для централизованной настройки часового пояса на компьютерах в домене Active Directory вы можете использовать групповые политики. Готовой политики для настройки часового пояса в GPO нет. Чаще всего используются следующие два варианта настройки часового пояса через GPO: с помощью logon скрипта GPO и с помощью импорта настроек часового пояса в реестр.

Для задания часового пояса через логон скрипт GPO, можете использовать простейший PowerShell скрипт (подходит для всех версий Windows, вплоть до Windows XP и Windows Server 2003):

$tmZone = "Russian Standard Time"
$WinOSVerReg = Get-Item "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion"
$WinOSVer = $WinOSVerReg.GetValue("CurrentVersion")
if ($WinOSVer -GE 6){
tzutil.exe /s $tmZone
} Else {
$param = "/c Start `"Change tmZone`" /MIN %WINDIR%System32Control.exe TIMEDATE.CPL,,/Z "
$param += $tmZone
$proc = [System.Diagnostics.Process]::Start( "CMD.exe", $param )
}

Другой способ настроек времени заключается в импорте содержимого ветки HKLMSYSTEMCurrentControlSetControlTimeZoneInformation с эталонного компьютера с настроенным временем на другие компьютеры через GPO. Процедура импорта ветки реестра через Group Policy Preferences описана в этой статье.

Выберите эту ветку целиком с помощью Registry Browser. В результате все настройки временной зоны будут импортированы в раздел редактора GPO (Computer Configuration -> Preferences -> Windows Settings -> Registry).

задать часовой пояс на компьютерах в домене ad через gpo

Если вы хотите использовать разные настройки временных зон для разных сайтов Acrive Directory, воспользуйтесь GPP Item Level Targeting. Привяжите настройки часового пояса к нужному сайту.

групповая политика для настройки часового пояса в зависимости от сайта active directoryad

Если вы используете RDS инфраструктуру, и пользователи и сервера RDSH находятся в разных часовых поясах, то в RDP сессий пользователя будет отображаться время. Это не удобно. Вы можете перенаправить локальный часовой пояс пользователя в RDP сессию с помощью политики Allow time zone redirection (Computer Configuration > Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Device and Resource Redirection.

Ошибка при изменении часового пояса в Windows Server 2019

В Windows Server 2019 RTM есть неприятный баг с настройкой часового пояса через графический интерфейс. Если вы попытаетесь изменить часовой пояс из панели Settings появится ошибка:

Date and time
Unable to continue. You do not have permission to perform this task. Please contact your computer administrator for help.
Продолжение невозможно. У вас нет разрешения на выполнение этой задачи. Обратитесь за помощью к сетевому администратору.

Не удается задать часовой пояс в Windows Server 2019 Продолжение невозможно. У вас нет разрешения на выполнение этой задачи

В первую очередь проверьте, что вы вошли под учетной записью с правами администратора, а в настройках локальной политики безопасности Change the time zone присутствует группа Administrators.

изменить часовой пояс ограничение в локальной политике

В качестве обходного решения в этом случае придется изменить часовой пояс из командной строки:

tzutil /l
tzutil /s "Russian Standard Time"

Или PowerShell:

GetTimeZone -ListAvailable|? DisplayName -like "*Moscow*"|Set-TimeZone

Если вы хотите изменить задать часовой пояс из графического интерфейса, можете воспользоваться старой консолью
timedate.cpl
(запустите ее из командной строки с правами администратора) или вызовите ее из Server Manager (Local Server -> Time zone).

windows server manager изменить часовой пояс

Windows 10
PowerShell и GPO, Настройка часового пояса в Windows из командной строки