PowerShell: подробности

Не так давно в "Компьютерных вестях" ("КВ" №25) была опубликована заметка в рубрике F.A.Q. о том, что такое Windows PowerShell. Поскольку данная тема заинтересовала читателей, то я рад предложить вашему вниманию продолжение рассказа о PowerShell, которое будет повествовать не только о том, что же это, собственно говоря, такое, но и о том, как с этим работать.


Немного о принципах

Хотя основные принципы Windows PowerShell уже излагались в упоминавшейся выше заметке, тем не менее, я немного повторюсь здесь для тех, кто не читал эту статью.

Windows PowerShell (мы будем обычно для краткости говорить просто PowerShell - и так вполне понятно, что речь идёт именно о Windows) - это скриптовый язык, предложенный корпорацией Microsoft в качестве замены старым средствам автоматизации, имевшимся в старушке Windows. Предназначен PowerShell, в первую очередь, для администраторов, которым не хватало функциональности не то что BAT-файлов, но и VBScript'а и JScript'а. Хотя, конечно же, рядовые пользователи, если им не лень, также могут изучить PowerShell и использовать его себе на благо.

Главным отличием PowerShell от всего того, что предлагала Microsoft в области скриптов ранее, является то, что этот скриптовый язык является глубоко объектно-ориентированным и "заточенным" под платформу .NET. В чём выражаются эти особенности? Во-первых, в том, что при работе с PowerShell вы не просто оперируете объектами - вы и передаёте их вместо текста, как это было в BAT-скриптах, что, согласитесь, намного упрощает работу администратора. Во-вторых, в скриптах можно использовать COM и .NET-объекты (т.е. экземпляры классов), что даёт в руки администратора инструменты невиданной ранее мощи. Кстати, когда я говорю про скрипты PowerShell, я не обязательно имею в виду файлы с текстом на этом языке - вполне можно обходиться и без них, набирая в командной строке и выполняя нужные вам команды.


Где взять?

PowerShell будет работать не на всех версиях ОС Windows. Например, для 2008-й можно не озадачиваться вопросом, где его взять, - он входит в стандартный комплект поставки этой системы. Пользователям Windows 2003, Vista, XP, желающим начать личное знакомство с PowerShell, нужно будет скачать установочный дистрибутив с сайта Microsoft (точный адрес такой: www.microsoft.com/windowsserver2003/technologies/ management/powershell/download.mspx). Заменив последнюю часть этого URL'а на default.mspx, вы попадёте на официальную страницу PowerShell на сайте Microsoft, а там уже можно будет найти много полезной дополнительной информации и скачать документации.

К сожалению, для того, чтобы скачать PowerShell, нужно будет пройти тест на происхождение вашей системы, и если оно окажется пиратским, скачать PowerShell вам не разрешат. Так что вам, наверное, придётся искать пиратский дистрибутив Windows 2008 и устанавливать его под каким-нибудь эмулятором (тоже, надо думать, взломанным, а не купленным). Пользователям Windows XP стоит запомнить тот факт, что под этой операционной системой PowerShell будет работать только в том случае, если на неё установлен второй или третий сервис-пак. А вот пользователям Windows 2000 и более старых операционных систем от Microsoft имеет смысл подумать не только о PowerShell, но и о переходе на более новые ОС, поскольку даже под 2000-й PowerShell уже работать не хочет.


PowerShell-скрипты

Как говорится в официальной документации, особенности синтаксиса PowerShell состоят в том, что во многом этот язык похож на C#. В этом, в общем-то, нет ничего удивительного, поскольку PowerShell с самого начала был ориентирован на .NET, а C# является основным языком для этой платформы. Ещё одна существенная и полезная особенность - это способ именования командлетов PowerSchell. Они для упрощения именуются не в традиционном "юниксовом" стиле, когда слова сокращаются, выбрасываются гласные, и т.п., а в стиле verb-noun, т.е. глагол-существительное (например: Stop-Service).

Теперь пару слов о том, что такое командлет (раз уж я употребил это слово). Командлеты (в оригинале по-английски это пишется как "cmdlets") - "кирпичики", из которых строится любой PowerShell-скрипт, независимо от его сложности. Так разработчики из Microsoft назвали небольшие программы, которые выполняют какую-то одну возложенную на них функцию (например, получают текущую дату или время). Командлетами могут быть самые разные виды программ: как исполняемый файлы Windows, так и PowerShell-скрипты, а также методы .NET и COM-объектов.

Для того, чтобы вы лучше себе представляли PowerShell-скрипты, приведу пример одного из них. Этот скрипт занимается тем, что показывает знаменитого "помощника" из Microsoft Office - правда, не скрепку, ненавидимую многими поколениями пользователей Word, Excel и PowerPoint, а волшебника Мерлина. Скрипт не сказать чтобы сильно полезный, но, по крайней мере, он довольно необычен.

$agent = New-Object -com Agent.Control.2
$agent.Connected = 1
$agent.Characters.Load("Merlin") | Out-Null
$merlin = $agent.Characters.Character("Merlin")
$merlin.Show() | Out-Null
$merlin.Speak("Result of equation is $result.") | Out-Null

Найти этот и другие скрипты вы можете в замечательном специализированном блоге, посвящённом PowerShell'у - xaegr.wordpress.com. Если вы действительно заинтересовались программированием на этом языке, вам будет очень полезно почитать этот блог.

В общем-то, сложно сказать, что именно сходного с C# нашла корпорация Microsoft в собственном скриптовом языке для администрирования - лично мне этот код, скорее, напомнил PHP значками доллара перед именем переменной. Тем не менее, объектная ориентированность данного языка программирования видна, что называется, невооружённым глазом.

На странице сайта Microsoft, посвящённой PowerShell, можно найти ссылку на хранилище рассортированных тематически готовых скриптов на этом языке, которые могут пригодиться в самых разных ситуациях. Скриптов в Microsoft'овском хранилище находится изрядное количество, поэтому если вам надо решать более-менее типовую задачу с помощью PowerShell, то, мне кажется, имеет смысл сначала посмотреть на то, что есть там, а потом уже самостоятельно начинать писать код.


Немного об инструментах и информация по командлетам

Для того, чтобы успешно использовать PowerShell для решения администраторских или пользовательских задач, нужно, безусловно, представлять себе, по крайней мере, какие в этом языке есть стандартные командлеты. К сожалению, их довольно много, и привести их полный список с указанием того, чем именно они занимаются, в данной статье не представляется возможным. Поэтому в который раз отошлю вас к microsoft.com. Кроме того, все командлеты, которые доступны в настоящий момент, можно узнать средствами самого PowerShell - для этого существует специальный командлет get-command. Для того, чтобы узнать, какие параметры нужно использовать для работы с командлетом, нужно записать его имя, используя следующий синтаксис: <имя-команды> -?. Отличие от ДОСовских команд, как видите, в этом плане самое что ни на есть минимальное.

Теперь что касается специализированных инструментов для написания PowerShell-скриптов. Поскольку PowerShell - язык, всё-таки, как ни крути, довольно сложный, то и специальные инструменты для скриптов совсем не помешают. Корпорация Microsoft предлагает милую сердцу любого настоящего администратора чёрную консоль с белыми буквами. К сожалению, для написания сложных скриптов она удобна немногим более блокнота, потому существуют сторонние решения для создания PowerShell-скриптов. Ссылки на официальные сайты разработчиков многих из этих инструментов можно найти на странице PowerShell. Самыми мощными из них являются, судя по отзывам на форумах, посвящённых PowerShell, PowerGUI (powergui.org) и PowerShell Analyzer (www.powershellanalyzer.com). Сложно сказать, какой из них вам покажется более предпочтительным - думаю, на первых порах при изучении PowerShell действительной необходимости в использовании подобных инструментов, на самом деле, не будет. Тем не менее, полезно иметь их в виду на будущее.


Резюме

В общем-то, если не углубляться в детали, то больше рассказать о PowerShell, пожалуй, и нечего. А если углубляться, то, полагаю, лучше начать с отдельной статьи, поскольку при подробном рассказе о работе с PowerShell одной-единственной статьёй, я думаю, обойтись будет сложно. Если поступят просьбы читателей, то, наверное, рассказ будет продолжен, если же нет, то на данной статье всё, скорее всего, и завершится.

Изучать PowerShell, как видите, стоит - особенно если вы занимаетесь или планируете заниматься администрированием Windows. Microsoft активно продвигает свой новый язык программирования и неустанно его совершенствует, добавляя всё новые возможности и делая его всё более удобным для администраторов. Но он удобен и сейчас - во многом благодаря идеям и концепциям, заложенным в его фундамент. Пожалуй, единственный недостаток PowerShell'а, отмечаемый его активными пользователями - это низкая скорость выполнения скриптов. Это, на самом деле, не такая уж большая плата за удобство - ведь PowerShell не предназначен для написания игр или для обработки каких-то больших массивов данных. Так что, видимо, будущее за PowerShell'ом, и с этим скриптовым языком сегодня выгодно иметь дело.

Вадим СТАНКЕВИЧ

Версия для печатиВерсия для печати

Номер: 

31 за 2008 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя Al
Ну опять показал конфетку и отобрал :)) Вадим, а например дать ссылку на http://support.microsoft.com/kb/926140, а упомянуть про Windows Script Host?
Аватар пользователя Вадим Станкевич
Al, про WSH была статья: http://kv.by/index2006281106.htm
Аватар пользователя Сергеев
Про Powershell есть очень хорошая книга на русском вот тут http://blogs.technet.com/abeshkov/archive/2008/12/24/3172943.aspx
Аватар пользователя XT
Python/Ruby -- и будет вам счастье