четверг, 28 апреля 2011 г.

Обзор блога за апрель 2011

  • Нажми на кнопку–получишь результат

    Подумайте перед нажатием кнопки ОК в gpedit. Или купите программу, которая подумает за Вас.

  • MVP–check!

    Ага, снова.

  • Миграция заданий из 2003 в 2008

    Простой путь по копированию задач с одного компьютера на другой.

  • Секреты %SystemRoot%\system32: Choice

    Утилита. Просто утилита =)

  • Легенды и мифы ИТ #1: Number of previous logons to cache

    Популярные ошибки, выпуск первый.

  • Визуализация состояния сертификатов на веб-сайтах

    Еще одна полезная утилита для тех, у кого много сайтов с сертификатами.

  • BITS и PowerShell

    BITSAdmin мертв? Почти.

  • понедельник, 25 апреля 2011 г.

    BITS и PowerShell

    Вася Гусев меня пристыдил тем фактом, что я распространял знание о BITSAdmin, вместо соответствующих командлетов PowerShell. Что ж, в какой-то мере он был определенно прав:

    • 1) PowerShell великолепно самодокументирован

    2) Писать скрипты на нем намнооого проще, чем в стандартном интерпретаторе комманд

    3) Его при некоторых условиях может ыбть чуть проще использовать в некоторых базовых ситуациях типа “просто дай мне этот чертов файл”

    4) Многие просто любят PoSh.

    Потому я чуток почитал (Disclaimer: действительно “чуток”, потому если ниже есть ошибки, то прошу мне на них указать) и мне показалось, что задача, типа описанной мной в упомянутой статье должна решаться (и Вася тоже так сказалSmile ) одной командой:

    Start-BitsTransfer –source <URL> –destination <PathToFile>

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

    image

    Оказывается, по-умолчанию модуль для BITS не подгружается. Ок, нужно это дело исправить (а если Вы пользуетесь BITS часто, то лучше это загнать в профиль, тогда не нужно будет делать это каждый раз):

    image

    и теперь у нас есть наши командлеты:

    image

    Ну-с, приступим:

    image

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

    image

    Даже несмотря на то, что утверждалось, что “BITS will try again” – он так этого и не сделал и не было ни одной зарегистрированной BITS-задачи. Я, если честно, не знаю почему (пусть мне объяснят =) ), но нашел как этого избежать. Просто добавьте параметр “-Asynchronous” к строке и все сработает как нужно, хотя уже и нельзя будет увидеть этот прекрасновидный статус загрузки:

    image

    image

    Однако, даже несмотря на то, что статус закачки сменился в конце концов на “Transferred”, в целевой папке был только .tmp файл. На самом деле, команда без параметра “-Asynchronous” просто выыкладывает Вам файл, куда нужно, но мы уже знаем недостатки этого метода. Так что я вынужден был закатить солнце закончить закачку вручную:

    image 

    В общем, не слишком большая разница с BITSAdmin. К тому же я не смог найти как добиться такого же эффекта, как с fasion BITSAsmin /MONITOR.

    Суммируя:

    1) PoSh при скриптинге - рулит

    2) Вы можете использовать для интерактивных задач любой набор команд, который Вам нравится. Однако помните, что BITSAdmin могут отменить в любой момент

    Потому, пока я не прочитаю внимательно все сам или мне не объяснят, как делать по другому, я буду использовать PoSh, везде, где смогу, а мониторить задачи буду с помощью BITSAdmin. ;)

    четверг, 21 апреля 2011 г.

    Визуализация состояния сертификатов на веб-сайтах

    imageВсего лишь еще один забавный инструмент. Если Вы не используете wildcard-сертификаты, то возможно у Вас много сертификатов. Обычно в таких условиях их состояние мониторится какой-нибудь автоматизированной системой (OpsMgr, nagios, собственная разработка), но иной раз нужно просто быстро окинуть взглядом ситуацию, чтобы понять текущее состояние дел. Вы можете использовать для этого опять же встроенные или самодельные отчеты или использовать вот этот инструмент: VerifySSLSertificate. Он маленький, простой, но имеет практически все, что нужно для описанной выше задачи. Вы можете сохранить или загрузить список серверов, сохранить сертификат сервера и установить порог тревоги. То, что надо. Или Вам нужно что-то большее, чтобы просто получить представление о состоянии дел? Я сомневаюсь, если честно:

    image 

    Так что спасибо Chris Blankenshipза эту утилиту и несколько других.

    понедельник, 18 апреля 2011 г.

    Легенды и мифы ИТ #1: Number of previous logons to cache

    imageЗнаете, как IT Pro я частенько сталкиваюсь с тем, что иначе как мифами и не назовешь. Видимо, IT уже настолько старая отрасль, что свои мифы в ней просто не обходимы. Иногда, столкновение с ними становится настолько частым, что объяснение что и где не так, как в этой легенде становится смертельно скучным. Что еще более удивительно, чем сам факт существования мифов, так это то, что описание того, как правильно, есть на куче ресурсов в Интернете, но... Ну, в любом случае, наверняка есть люди, которые знают людей, которые читают мой блог и не читают эти ресурсы, так что я все равно их тут изложу постепенно.

    Давайте начнем с самого базового, но очень часто всплывающего мифа о работе одной настройки в групповых политиках. Да, ту самую, о которой сказано в заголовке. Я однажды встречал человека, которого из-за нее чуть не уволили. Правда. Как всегда: “входит шеф и говорит, что нужно запретить продажникам входить в их ноутбуки больше, чем 15 раз без подсоединения к корпоративной сети, а то задолбали вообще в офисе не появляться”. “Нет проблем”, отвечает ему администратор, меняет настройку политики на 15 и отчитывается о выполнении задачи. А спустя некоторое время выясняется, что задача вовсе и не выполнена и начальство спускает всех собак. Что же случилось и как это поправить?

    Перво-наперво, однозначно было ошибкой не проверить, а работает ли Ваше изменение (Я тоже наступал в свое время на эти грабли… Плохие воспоминания… Smile).

    Во-вторых, эта настройка регулирует вовсе не то, что кажется на первый взгляд. Если мы прочитаем ее описание в первоисточнике (а это хорошая идея для реализации перед изменениями), то мы увидим следующее: “Determines the number of users who can have cached credentials on the computer”. Или в моём вольном переводе: “Определяет количество пользователей, которые могут иметь закешированные учетные данные на этом компьютере”. Вот оно! Количество самих учетных данных, которые можно кешировать, а не раз, которые можно использовать каждый из них. Так что если у Вас есть разъездной ноутбук, на котором работает 15 пользователей (ого…), то это может Вам помочь. Но не сможет ограничить количество раз, которое можно входить в систему без контакта с  контроллером домена. 

    И в-третьих, плохие новости: я не знаю, как сделать то, что требовал тот самый начальник. По-крайней мере, не знаю, как сделать это встроенными средствами Windows. Если Вы знаете – поделитесь. Впрочем, незнание, это все равно не повод говорить шефу, что Вы решили эту задачу.  Smile

    четверг, 14 апреля 2011 г.

    Секреты %SystemRoot%\system32: Choice

    Мы не станем обсуждать следующие три команды – chglogon, chgport и chguser – поскольку они уже все заменены на change. Так что следующим подопытным будет

    choice

    Будучи не слишком полезным сам по себе, он может понадобиться в bat-скриптах, которые, повторюсь вновь, могут быть весьма и весьма серьезными (хотя я все-таки больше люблю PowerShell, который позволяет мне делать глупости быстрее и более качественно ;) ). Так что если Вам нужно сделать *.bat с нелинейным развитием событий, зависящим от выбора пользователя, то можно использовать эту команду. Например, можно спросить как-то так:

    image

    =))) Более того, можно выставить дефолтный ответ и запустить таймер (если пользователь такой ленивый, что и кнопку нажать не может):

    image

    Почти та же картинка, но не нажимал никаких кнопок, ответ был выбран через 5 секунд ожидания автоматически. 

    Получение, собственно, ответа, не слишком прямолинейно. Он не возвращается как результат выполнения команды, а помещается в переменную %ERRORLEVEL%. Не слишком большая проблема, но… Я все-таки предпочитаю PoSh. Тем не менее, если Вы все еще зависите от bat-скриптов, то это Ваш “choice” ;)

    понедельник, 11 апреля 2011 г.

    Миграция заданий из 2003 в 2008


    Что ж, самое время мне все-таки выучить синтаксис команды schtasks, который я так не желал учить. Некоторое время назад мне пришлось решать проблему перемещения ряда задач с одного сервера на другой. Сама по себе задача не слишком радующая, а тут еще пришлось копировать их с Windows 2003 на Windows 2008. Когда переносимая задача одна это легко делается вручную, но если их много… Вот тут-то и наступает момент триумфа schtasks!
    Что он может для нас сделать, так это экспортировать задачу с удаленного сервера в формат XML. Предположим, мы имеем задачу “Command Prompt”, которая единоразово запускает cmd.exe:
    image
    image
    image
    Давайте используем наше секретное оружие:
    image
    В файле Task.xml мы получим следующее содержание:
       1: <?xml version="1.0" encoding="utf-16"?>
       2: <Task version="1.1" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
       3:   <RegistrationInfo>
       4:     <Author>trofimov</Author>
       5:   </RegistrationInfo>
       6:   <Triggers>
       7:     <TimeTrigger>
       8:       <Enabled>true</Enabled>
       9:       <StartBoundary>2011-04-10T23:43:00</StartBoundary>
      10:     </TimeTrigger>
      11:   </Triggers>
      12:   <Settings>
      13:     <Enabled>true</Enabled>
      14:     <DeleteExpiredTaskAfter>PT0S</DeleteExpiredTaskAfter>
      15:     <ExecutionTimeLimit>PT259200S</ExecutionTimeLimit>
      16:     <Hidden>false</Hidden>
      17:     <WakeToRun>false</WakeToRun>
      18:     <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
      19:     <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
      20:     <RunOnlyIfIdle>false</RunOnlyIfIdle>
      21:     <Priority>5</Priority>
      22:     <IdleSettings>
      23:       <Duration>PT600S</Duration>
      24:       <WaitTimeout>PT3600S</WaitTimeout>
      25:       <StopOnIdleEnd>false</StopOnIdleEnd>
      26:       <RestartOnIdle>false</RestartOnIdle>
      27:     </IdleSettings>
      28:   </Settings>
      29:   <Principals>
      30:     <Principal>
      31:       <UserId>System</UserId>
      32:     </Principal>
      33:   </Principals>
      34:   <Actions>
      35:     <Exec>
      36:       <Command>C:\WINDOWS\system32\cmd.exe</Command>
      37:       <WorkingDirectory>C:\WINDOWS\system32</WorkingDirectory>
      38:     </Exec>
      39:   </Actions>
      40: </Task>

    которое мы можем импортировать в наш сервер W2008R2 с помощью schtasks или даже через GUI:

    image

    image

    image

    Разумеется, schtasks более эффективен в случае перемещения многих задач, однако GUI намного более эффектен ;)

    среда, 6 апреля 2011 г.

    MVP–check!

    MVP_FullColor_ForScreen

    Совсем забыл! 1го апреля меня в шутку реноминировали, так что я снова MVP. Надеюсь, что читатели считают это заслуженным и буду продолжать в том же духе =)

    понедельник, 4 апреля 2011 г.

    Нажми на кнопку–получишь результат

    GPOА Вы знаете, в какой точно момент происходит применение настроек GPO, когда Вы их правите? Когда Вы переключаете крыжик в положение “Enabled”? Или когда Вы закрываете консоль редактора групповых политик? Я довольно давно об этом задумался, но, конечно же, слишком ленился, чтобы проверить это самостоятельно ;) Однако, некоторое время назад я был на курсах, где спросил тренера об этом. Так как он не знал ответа, то мы (“мы пахали”, ага) тут же провели некий эксперимент. Выяснилось, что настройки появляются в Sysvol в момент, когда нажимается кнопка “OK” или “Apply” для каждой конкретной настройки. Вы мне не верите? И правильно – проведите свой эксперимент или, если Лень родилась не позже, то можете посмотреть этот короткий ролик: