Итак, Верховная Рада Украины приняла абсолютно внезапно закон о том, что с 30 октября 2011 г. такая большая по протяженности с востока на запад страна, как Украина, переходить на зимнее время не будет. Не будем рассматривать аспекты того, что в западных областях светать зимой будет в 10:00 утра, вопрос в другом – как быть ИТшникам и вообще – всем пользователям компьютеров, которых этим постановлением просто «выкинули» из привычного часового пояса UTC +02:00 Хельсинки, Киев, Рига, София, Таллинн, Вильнюс? Часы-то на всех компьютерах переведутся!
Естественно, с момента принятия такого эпохального закона прошло не так много времени и вероятность появления нового патча от Microsoft для очередного «дробления» часовых поясов за столь короткий срок минимальна (напомню, что полугодом ранее Россия приняла такой же закон, но поставила в известность всех еще в марте о планируемом отказе от зимнего времени в октябре и патч был выпущен в августе). Но, понимая серьезность проблемы, 5 октября 2011 г. на сайте поддержки Microsoft появилась статья о том, что делать украинским пользователям Windows, чтобы часы не перевелись «как не надо» – все желающие познакомиться с первоисточником могут это сделать здесь http://support.microsoft.com/kb/2625508.
Рецепт счастья прост – такая часовая зона уже существует, и не где-нибудь в Африке, а ближе – в Калининграде. Т.е. достаточно в настройках времени ваших систем просто установить часовой пояс UTC +03:00 Калининград, при условии, как указано в статье на сайте поддержки, что у вас уже установлены на компьютере последние обновления часовых поясов, выпущенные в августе 2011 г. – http://support.microsoft.com/kb/2570791. Кстати, я бы не торопился их качать вот так сразу, а просто установил бы их через штатные механизмы обновления Windows.
И, конечно же, не забудьте все вышеуказанное сделать до 30 октября 2011 г., иначе часики-то переведутся.
Вроде все легко и понятно, но есть одно большое НО – а что, если у меня не 1, 2 и даже не 10 компьютеров, где подобную операцию можно проделать за 5 минут.
А что, если компьютеры исчисляются сотнями и тысячами? Тогда рецепт еще более прост – запускаем скрипт, и все будет в шоколаде. Хотя тут тоже стоит перед нами два вопроса – какой скрипт и как запускать.
Первый вопрос – «какой скрипт?» – наиболее простой. Вот этот скрипт на PowerShell (взятый отсюда http://blogs.technet.com/b/deploymentguys/archive/2009/06/07/setting-the-time-zone-using-windows-powershell.aspx и слегка модифицированный и который можно использовать и как отдельные команды, и в варианте VBScript – кому как нравится):
$timeZone = "Kaliningrad Standard Time"
$regVer = Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
$winVer = $regVer.GetValue("CurrentVersion")
if ($winVer -GE 6){
tzutil.exe /s $timeZone
} Else {
$param = "/c Start `"Change TimeZone`" /MIN %WINDIR%\System32\Control.exe TIMEDATE.CPL,,/z "
$param += $timeZone
$proc = [System.Diagnostics.Process]::Start( "CMD.exe", $param)
}
Краткое пояснение работы скрипта, вдруг вы не нуждаетесь в столь универсальном инструменте:
и по второму вопросу – «как запустить скрипт на всех компьютерах в сети?» – все просто:
Думаю, это вам поможет. Приглашаю всех заинтересованных делиться тут своими вариантами скриптов для установки часового пояса и, особенно, для распространения на сотни и тысячи машин в корпоративных сетях. Буду дописывать в этом посте с указанием авторов. Торопитесь, времени совсем мало осталось.
И остается надеяться, что очередную «рукотворную проблему 2000 года» Украина нормально переживет.
P.S. А вот полноценный патч с отдельным часовым поясом для Украины будет выпущен Microsoft уже в декабре 2011, если верить все тому же первоисточнику – http://support.microsoft.com/kb/2625508