Чтобы на вашем устройстве Windows показывалось правильное время, часовой пояс (time zone) на нем должен соответствовать географическому расположению компьютера. В этой статье мы рассмотрим, как задать часовой пояс в Windows из панели управления, из командной стоки, PowerShell и через групповые политики.
Настройка часового пояса через панель управления Windows
Начиная с Windows 10 и Windows Server 2016 для настройки времени часового пояса в Windows используется отдельный раздел в панели Параметры/Settings. Выполните команду
ms-settings:dateandtime
или щелкните по значку часов в системном трее и выберите пункт Adjust date/time (Настройка времени и даты).
По умолчанию Windows пытается автоматически синхронизировать время и выбрать часовой пояс (включена опция Set time zone automatically/Автоматически устанавливать часовой пояс).
Чтобы выбрать часовой пояс вручную, нужно отключить эту опцию и выбрать пояс в выпадающем списке.
Также для управления часовым поясом можно использовать классическое окно настройки времени в Windows (команда
timedate.cpl
).
При попытке изменить часовой пояс в Windows Server 2019 и 2022 под администратором из панели управления появляется ошибка:
Date and time Unable to continue. You do not have permission to perform this task. Please contact your computer administrator for help.
Продолжение невозможно. У вас нет разрешения на выполнение этой задачи. Обратитесь за помощью к сетевому администратору.
Чтобы решить эту проблему, проверьте что у вашей учетной записи есть права на смену часового пояса. Откройте редактор локальной групповой политики (
gpedit.msc
), перейти в раздел Computer Configuration -> Windows Settings -> Security Settings -> Local Policiers -> User Rights Assignment и добавить встроенную группу Administrators в параметр Change the time zone.
После обновления настроек GPO запустите командную строку с правами администратора (!!!), выполните команду
timedate.cpl
и вы сможете изменить часовой пояс. Либо в качестве обходного решения вы можете изменить часовой пояс из командной строки.
Изменить часовой пояс из командной строки с помощью TZutil
Для управления часовым поясом в Windows можно использовать встроенную утилиту
tzutil.exe
(Windows Time Zone Utility).
Вывести идентификатор текущего часового пояса (TimeZoneID):
tzutil /g
Russian Standard Time
Выведите список всех часовых поясов с их параметрами и названиями:
tzutil /l
Если вам нужно быстро найти вывести все часовые пояса, с определенным с сдвигом, например 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мин Дата:(не указано)]
Управление часовым поясом в Windows из PowerShell
Чтобы узнать текущий часовой пояс Windows из PowerShell, выполните команду:
Get-TimeZone
Id : Ekaterinburg Standard Time DisplayName : (UTC+05:00) Екатеринбург StandardName : RTZ 4 (зима) DaylightName : RTZ 4 (лето) BaseUtcOffset : 05:00:00 SupportsDaylightSavingTime : True
Вывести доступные часовые пояса:
Get-TimeZone -ListAvailable
Для поиска в списке часовых поясов воспользуйтесь фильтром:
Get-TimeZone -ListAvailable | Where-Object {$_.displayname -like "*Samara*"}
Изменить часовой пояс:
Set-TimeZone -Name "Astrakhan Standard Time"
Или
Get-TimeZone -ListAvailable|? DisplayName -like "*Moscow*"|Set-TimeZone
Удаленно получить список часовых поясов на серверах Windows (список в txt файле):
$servers = get-content C:\servers.txt
Get-WMIObject -Class Win32_TimeZone -Computer $servers | select-Object PSComputerName, Caption
Изменить часовой пояс на списке серверов Windows:
$servers = get-content C:\servers.txt
Invoke-Command -ComputerName $servers -Command {Set-TimeZone "West Asia Standard Time"}
Настройка часового пояса Windows через GPO
Для централизованной настройки часового пояса на компьютерах в домене Active Directory вы можете использовать групповые политики. Готовой политики для настройки часового пояса в GPO нет. Чаще всего используются следующие два варианта настройки часового пояса через GPO: с помощью logon скрипта GPO и с помощью импорта настроек часового пояса в реестр.
Для задания часового пояса через логон скрипт GPO, можете использовать простейший PowerShell скрипт (подходит для всех версий Windows):
$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 )
}
Другой способ настроек времени заключается в импорте содержимого ветки HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation с эталонного компьютера с настроенным временем на другие компьютеры через GPO. Процедура импорта ветки реестра через Group Policy Preferences описана в этой статье.
Выберите эту ветку целиком с помощью Registry Browser. В результате все настройки временной зоны будут импортированы в раздел редактора GPO (Computer Configuration -> Preferences -> Windows Settings -> Registry).
Если вы хотите использовать разные настройки временных зон для разных сайтов Acrive Directory, воспользуйтесь GPP Item Level Targeting. Привяжите настройки часового пояса к нужному сайту.
Если вы используете терминальные фермы RDS серверов, и пользователи и сервера RDSH находятся в разных часовых поясах, то в RDP сессий у пользователя будет отображаться некорректное время. Чтобы перенаправить локальный часовой пояс пользователя в RDP сессию, включите параметр GPO Allow time zone redirection (Computer Configuration > Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Device and Resource Redirection.
Статья идет в загажник.
стоит вспомнить сколько было проблем после отказа от перевода стрелок и изменении часовых поясов.
В Ближайшее время будет очередная попытка сорвать время всем администраторам 🙂
Все правильно — начинаем готовить мануалы по грядущему переходу на зимнее время 🙂 .
Следите за новыми статьями!
А зачем так сложно?
яимею в виду вот эти строки:
$param = «/c Start `»Change tmZone`» /MIN %WINDIR%\System32\Control.exe TIMEDATE.CPL,,/Z «$param += $tmZone$proc = [System.Diagnostics.Process]::Start( «CMD.exe», $param )
Ведь можно сделать «tzchange.exe /c «russian standard time»
Скажите пожалуйста, что будет если команду RunDLL32.exe shell32.dll,Control_RunDLL timedate.cpl,,/Z Russian Standard Time выполнить на Windows 7?
Ошибка будет) про точку входа Control_RunDLL (у меня win7 pro x64)
В Windows 7 нужно использовать утилиту tzutil
Поправка по PowerShell
Set-TimeZone -Name «Astrakhan Standard Time»
Вместо -Name надо -Id
Правильным вариантом будет не tzutil /s “Pacific Standard Time_dstoff”
а tzutil /s “Pacific Standard Time»_dstoff
В Windows 10 еще есть служба автоматического определения часового пояса (работает похоже через геолокацию). По умолчанию отключена, включается в реестре:
Path: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tzautoupdate\
Key: Start
Value: 3
Type: dword
В Windows Server 2022 тоже не дает изменить часовой пояс. Менять приходится командой:
И исправьте GetTimeZone на Get-TimeZone
Get-TimeZone -ListAvailable|? DisplayName -like "*Moscow*"|Set-TimeZone
Написал простой скрипт по удаленному опросу и удаленной установке часового пояса на множестве серверов.
Опрос:
$servers = get-content «C:\servers.txt»
Get-WMIObject -Class Win32_TimeZone -Computer $servers | select-Object PSComputerName, Caption
Установка значения (powershell с правами админа):
$servers = get-content «C:\servers.txt»
Invoke-Command -ComputerName $servers -Command {Set-TimeZone «West Asia Standard Time»}
Формат файла «servers.txt», имена серверов в столбик:
server1
server2
server3
Спасибо тебе, добрый человек.
Не хватало прав на смену часового пояса в Вин10.
Открыл командную строку с правами админа и воспользовался вашей подсказкой.
Супер.
не
Set-TimeZone -Name «Qyzylorda Standard Time»
а
Set-TimeZone -id «Qyzylorda Standard Time»
в списке
Set-TimeZone -id ‘Qyzylorda Standard Time’
не имена а айдишники в том что вводим удобно
из Server Manager (Диспетчер серверов) нужно запускать изменение времени, быстро и без костылей все применяется