Изучаем PowerShell
Windows PowerShell - результат развития технологий автоматизации
🕛 12.09.2009, 23:38
Прежде чем приступить непосредственно к изучению оболочки командной строки Windows PowerShell, попробуем ответить на ряд вопросов. Для чего, собственно, компании Microsoft потребовалось создавать этот совершенно новый инструмент и язык программирования? Какую пользу он может принести обычным пользователям и системным администраторам? Почему недостаточно было существующих средств?Чтобы понять это, посмотрим, как в операционной системе Windows обстояло дело с автоматизацией работы, то есть решением различных задач в автоматическом режиме, без участия человека, до появления PowerShell.
Предшественники PowerShell в мире Windows
В настоящее время графический интерфейс Windows стал настолько привычным. что многие пользователи и начинающие администраторы лаже не задумываются об альтернативных способах управления операционной системой с помощью командной строки (command line) и различных сценариев (scripts). Зачастую они просто не знают о тех преимуществах, которые дают эти инструменты с точки зрения автоматизации работы.Подобная ситуация обусловлена тем. что исторически командная строка всегда была слабым местом операционной системы Windows (но сравнению с UNIX-системами). Причиной этого, прежде всего, является то. что компания Microsoft изначально ориентировалась на широкую аудиторию неискушенных пользователей, не желающих особо вникать в технические детали выполнения тех или иных действий в системе. Поэтому основные усилия разработчиков операционной системы направлялись на улучшение графической оболочки для более комфортной работы непрофессионалов, а не на создание рабочей среды для специалистов или опытных пользователей.
Как показало время, с коммерческой точки зрения на рынке персональных (домашних или офисных) компьютеров эта стратегия оказалась более чем успешной: миллионы людей используют графический интерфейс Windows для запуска нужных им программ, работы в офисных пакетах, просмотра фильмов и т. п. Да И управлять одним Windows-сервером сегодня несложно: операционная система предлагает удобные графические средства для настройки различных параметров и выполнения ежедневных администраторских задач, а с помощью службы терминалов легко можно работать на удаленном сервере, физически расположенном хоть на Другом континенте.
Однако подобная модель управления не является масштабируемой: если с помощью стандартных графических инструментов администрировать не один, а десять серверов, то последовательность изменений настроек в диалоговых окнах придется повтори п. десять раз. Следовательно, в этом случае остро встает вопрос об автоматизации выполнения рутинных операций (например. проведения инвентаризации оборудования и программного обеспечения. мониторинга работы служб, анализа журналов событий и т.д.) па множестве компьютеров. Помочь в этом могут либо специальные (как правило. тяжеловесные и недешевые) приложения типа Microsoft Systems Management Server (SMS), либо сценарии, которые пишутся администраторами самостоятельно (на языке оболочки командной строки или на специальных языках сценариев) и поддерживаются непосредственно операционной системой. без установки сторонних программных продуктов.
Поэтому для профессионала, занимающегося администрированием информационных систем на базе Windows, знание возможностей командной строки. сценариев и технологий автоматизации, поддерживаемых данной операционной системой, просто необходимо.
При этом, однако, неправильно было бы думать, что командная строка пли сценарии нужны только администраторам. Ведь рутинные ежедневные задачи пользователей (связанные, например, с копированием или архивированием файлов, подключением или отключением сетевых ресурсов и т. п.). которые обычно выполняются с помощью графического интерфейса проводника Windows, можно полностью самостоятельно автоматизировать, написав нехитрый командный файл, состоящий всего из нескольких строчек! Однако для человека, не знающею основные команды Windows и такие базовые возможности операционной системы, как перенаправление ввода/вывода и конвейеризация команд, некоторые простейшие задачи могут показаться нетривиальными. Попробуйте, например, пользуясь только графическими средствами, сформировать файл, содержащий имена файлов из всех подкаталогов какого-либо каталога! Л ведь для пою достаточно выполнить единственную команду dir (с определенными ключами) и перенаправить вывод этой команды в нужный текстовый файл. Например, следующая команда создаст текстовый файл , в котором будут записаны имена всех файлов с расширением тр.З. находящихся в каталоге или в каком-либо его подкаталоге
Задумаемся теперь, каким же нам хотелось бы видеть инструмент для автоматизации работы в операционной системе, какими возможностями он должен обладать? Желательно, чтобы в нем было реализовано следующее:
П работа в разных версиях операционной системы (в идеальном случае во всех) без установки какого-либо дополнительного программною обеспечения:
интеграция с командной строкой (непосредственное выполнение вводимых с клавиатуры команд):
согласованный и непротиворечивый синтаксис команд и утилит:
наличие подробной встроенной справки по командам с примерами использования:
возможность выполнения сценариев, составленных на простом для изучения языке:
возможность использования всех технологий, поддерживаемых операционной системой.
В UNIX-системах в качестве инструмента автоматизации выступает стандартная оболочка (sh) или ее модификации (bash. ksh. csh и т. д.). причем этот аспект операционной системы стандартизирован в рамках POSIX (стандарт мобильных систем).
В операционной системе Windows дело обстоит сложнее. На сегодняшний день одного "идеального" средства автоматизации, удовлетворяющего сразу всем перечисленным выше требованиям, в Windows нет. В последних версиях операционной системы одновременно поддерживаются несколько стандартных инструментов автоматизации, сильно отличающихся друг от друга: оболочка командной строки cmd.exe. среда выполнения сценариев Windows Script Host (WSH). оболочка WMI Command-line (WMIC) и, наконец, новинка и предмет нашего изучения- оболочка Microsoft PowerShell. Поэтому администратору или пользователю Windows приходится выбирать, каким именно подходом воспользоваться для решения определенной задачи, а для этого желательно иметь четкое представление о сильных и слабых сторонах всех доступных средств автоматизации.