Причины и цели создания оболочки PowerShell
🕛 12.09.2009, 23:45
Итак, к началу XXI века в операционной системе Windows поддерживались три разных инструмента для автоматизации работы: оболочки команднойстроки cmd.exc и WMIC. а также сервер сценариев WSH. Зачем же компании Microsoft понадобилась разработка еще одной совершенно новой оболочки командной строки со своим языком сценариев?
Дело в том. что у каждого из перечисленных инструментов автоматизации имелись довольно серьезные недостатки, не позволявшие сказать, что Windows обладает ио-настоящему мощным и эффективным средством для работы с командной строкой и написания сценариев (см. табл. 1.1). С одной стороны. функциональности и гибкости языка оболочки cmd.exe было* явно недостаточно, а с другой стороны, сценарии WSH. работающие с объектными моделями ADSI и WM/. оказались слишком сложными для пользователей среднего уровня и начинающих администраторов.
Частично (команды WMIC можно встраивать в командные файлы)
Начав дорабатывать WMIC. специалисты Microsoft поняли, что можно реализовать оболочку, которая не ограничивалась бы только работой с объектами WMI. а также предоставляла бы доступ к любым классам платформы .NET Framework, обеспечивая тем самым возможность пользоваться из командной строки всеми мощными функциональными возможностями данной среды.
Новая оболочка Windows PowerShell (первоначально она называлась Monad) была задумана разработчиками Microsoft как более мощная среда для написания сценариев и работы из командной строки. Разработчики PowerShell преследовали несколько целей. Главная и наиболее амбициозная из них - создать среду составления сценариев, которая наилучшим образом подходила бы для современных версий операционной системы Windows и была бы более функциональной, расширяемой и простой в использовании, чем какой-либо аналогичный продукт для любой другой операционной системы. В первую очередь эта среда должна была подходить для решения задач, стоящих перед системными администраторами (тем самым Windows получила бы дополнительное преимущество в борьбе за сектор корпоративных платформ). а также удовлетворять требованиям разработчиков программного обеспечения. предоставляя им средства для быстрой реализации интерфейсов управления создаваемыми приложениям п.
Для достижения этих целей были решены следующие задачи:
□ Обеспечение прямого доступа из командной строки к объектам СОМ, WMI u .NET. В новой оболочке присутствуют команды, позволяющие в интерактивном режиме работать с СОМ-объектами. а также с экземплярами классов, определенных в информационных схемах WMI и .NET.
П Организации работы с произвольными источниками данных в командной строке но принципу файловой системы. Например, навигация но системном) реестру или хранилищу цифровых сертификатов выполняется
из командной строки с помощью аналога команды cd интерпретатора cmd.exe.
О Разработка интуитивно попятной унифицированной структуры встроенных команд, основанной на их функциональном назначении.
В новой оболочке имена всех внутренних команд (в PowerShell они называются командлетами) соответствуют шаблону "глагол-существительное". например, Get-Process (получить информацию о процессе). Stop-Sei (остановить службу), Clear-Host (очистить экран консоли) и т. д. Для одинаковых параметров внутренних команд используются стандартные имена, структура параметров во всех командах идентична, все команды обрабатываются одним синтаксическим анализатором. В результате облегчается изучение и запоминание команд.
О Обеспечение возможности расширения встроенного набора команд.
Внутренние команды PowerShell могут дополняться командами, создаваемыми пользователем. При этом они полностью интегрируются в оболочку. информация о них может быть получена из стандартной справочной системы PowerShell.
О Организация поддержки знакомых команд из других оболочек.
В PowerShell на уровне псевдонимов собственных внутренних команд поддерживаются наиболее часто используемые стандартные команды из оболочки cmd.exe и UNIX-оболочек. Например, если пользователь, привыкший работать с UNIX-оболочкой, выполнит is, то он получит ожидаемый результат: список файлов в текущем каталоге (то же самое относится к команде dir).
□ Разработка полноценной вез роенной справочной системы для внутренних команд. Для большинства внутренних команд в справочной системе дано подробное описание и примеры использования. В любом СЛ) чае встроенная справка по любой внутренней команде будет содержать краткое описание всех ее параметров.
~1 Реализация автоматического завершения при вводе с клавиатуры имен команд, их параметров, а также имен файлов н папок. Данная возможность значительно упрощает и ускоряет ввод команд с клавиатуры.
Разработчики старались собрать в PowerShell все лучшие аспекты других оболочек командной строки из разных операционных систем. По их словам, сильное влияние на PowerShell оказали следующие продукты:
bash, ksh (конвейеризация или композиция команд):
AS/400, VMS (стандартные названия команд, ускоряющие изучение);
Tel. WSH (поддержка встраиваемости и нескольких языков):
Perl. Python (выразительность и стиль).
Отметим, что PowerShell одновременно является и оболочкой командной строки (пользователь может работать в интерактивном режиме) и средой выполнения сценариев, которые пишутся на специальном языке PowerShell.
Интерактивный сеанс в PowerShell похож на работу в оболочке UNIX-систем. Все команды в PowerShell имеют подробную встроенную справку (для большинства команд приводятся примеры их использования), поддерживается функция автоматического завершения названий команд и их параметров при вводе с клавиатуры, для многих команд имеются псевдонимы, аналогичные названиям UNIX-утилит (is, pwd. toe и т. д.).
Отдельное внимание было уделено вопросам безопасности при работе со сценариями (например, запустить сценарий можно только с указанием полного пути к нему, а по умолчанию запуск сценариев PowerShell в системе вообще запрещен).
Язык PowerShell несложен для изучения, писать на нем сценарии, обращающиеся к внешним объектам, проще, чем на VBScript или JScript. В целом. оболочка PowerShell намного удобнее и мощнее своих предшественников (cmd.exe и WSI1). а основным недостатком, сдерживающим распространение нового инструмента, является тот факт, что PowerShell работает не во всех: версиях операционной системы Windows. Оболочкой можно пользоваться только на версиях не ниже Windows XP Service Pack 2 с установленным пакетом .NET Framework 2.0.
Главной особенностью среды PowerShell. отличающей ее от всех других оболочек командной строки, является то. что единицей обработки и передачи информации здесь является объект, а не строка текста. В командной строке PowerShell вывод результатов команды представляет собой не текст (в смысле последовательности байтов), а объект (данные вместе со свойственными им методами). В силу этого работать в PowerShell становится проще, чем в традиционных оболочках, так как не нужно выполнять никаких манипуляций по выделению нужной информации из символьного потока.