PowerShell
19 April 2009

Знакомство с PowerShell

О том, что Microsoft в недавнем прошлом разродилась свежей оболочкой под названием PowerShell, я узнал еще с год назад. А вот попробовать, что это за зверь такой, никак руки не доходили. Но вот на днях на свежеустановленном Window Server 2008 я обнаружил эту штуку в составе предустановленных компонент, и любопытство все же взяло верх. Открыл, попробовал набить пару команд типа «help», "?" и т.п. — в результате был получен список всех команд (в жаргоне PowerShella, командлетов — cmdlets), оказавшийся достаточно объемным. Причем в списке фигурировали названия вроде ForEach, Where, которые не могли не вызвать интереса к тому, как эти конструкции можно потрогать. Полез за документацией и был приятно удивлен найденным переводам книг-учебников по сабжу (читал Windows PowerShell RU) — ссылки можно найти на блоге одного из активных участников комьюнити:

blogs.technet.com/abeshkov/archive/2008/12/24/3172943.aspx



Итак, после нескольких часов работы с PowerShell в голове отложилось:
— PowerShell ничем не хуже обычного cmd.exe
— Очень понравилась концепция объектно-ориентированной обработки данных, полученных из команд (командлетов). Порадовался, что можно зайти на ветку реестра, например, HKLM, как на обычный диск, командой cd HKLM: и побродить по нему все теми же ls и cd, читая атрибуты объектов реестра способом, аналогичным тому, который используется при чтении атрибутов файлов и директорий.
— Не очень понравился процесс ввода длинных команд и их редактирования (в случае, если они многострочные). Наверное, в этом случае нужно было действовать, загружая файлы скриптов, редактируя их отдельно от оболочки.
— Не очень понравился синтаксис PowerShella с точки зрения личного неудобства — мне не нравится то, что нужно предварять имя любой переменной знаком $ или $_ в случае обращения к переданному объекту. Но, считаю, что к этим неудобствам вполне несложно привыкнуть, зато в коде сразу видны переменные + минимизируется число телодвижений.
— Впечатлила возможность импорта/экспорта объектов в форматы CSV, XML (как я понял, происходит это с помощью механизма сериализации .NET), а тем более возможность взаимодействия с COM-объектами (в книге рассмотрен пример, в котором код в десяток строчек формирует раскрашенную таблицу и сохраняет её в XSLX-формате).
— Описание возможностей интеграции CLS-совместимого .NET-кода с PowerShell оставило туманное впечатление о действительно большом достижении в области создания расширяемых механизмов администрирования. (С этим я еще не разбирался, самому интересно, насколько заявленная мощь соответствует действительности. Однако то, что можно прикрутить .NET-код, в любом случае радует).

В общем, впечатление позитивное и мне было бы интересно узнать отзывы тех людей, которые вплотную работают с этим инструментом.

+27
19.3k 46
Comments 70
Top of the day