Pull to refresh

Intellisense для PowerShell

Reading time3 min
Views1.4K
Не мое, попросил опубликовать чел, у которого нет на хабре акка, а песочнице творение доверить не решился.

Очень многие недовольны тем, что скрипты PowerShell очень трудно писать из-за специфичных имен командлетов и тем, что сама среда написания скриптов не очень удобна. Отчасти проблему решает наличие достаточно удобного Windows PowerShell ISE, в нем можно выполнять отдельные команды, а также писать скрипты и прямо здесь же их пошагово отлаживать. Также ISE поддерживает работу с табами, есть возможность трансформировать интерфейс под себя: настроить расположение панелей, изменить шрифт и др. В ISE также очень удобно можно манипулировать кодом, легко выделяя, удаляя, копируя различные его части, используя привычные комбинации клавиш. Так же есть мощнейший инструмент для написания скриптов — PowerGUI от Quest Software Inc., но он больше предназначен для профессионального использования.



Но как же быть любителям черных окошек? Ведь поставляемое консольное приложение PowerShell'a хоть и имеет чуть больше возможностей чем cmd, но получить удовольствие работая в нем удается не всегда. Консольный PowerShell умеет хорошо подсказывать пути к файлам, командлеты и их параметры. Но согласитесь, как было бы хорошо иметь свой IntelliSence для PowerShell, неправда ли? Вот о таком дополнеии к PS я хочу рассказать. Скорее всего люди, кототые часто пишут скрипты на PS давно знают и пользуются данным расширением, но по крайней мере на хабре о нем ни слова, или я плохо искал?

Итак название этого дополнения — PowerTab (Заранее извиняюсь, если вы о данном дополнении знали и часто пользовались и этот пост для вас представляет бесполезную информацию). Взять его можно с этого сайта, ссылка на страницу загрузки. На данный момент там доступны версии для 1 повершелла, а также для весрии 2.0, которая присутствует в Windows 7 и Windows Server R2 и может быть загружена с сайта Microsoft.

Что же умеет этот мой любимый PowerTab? А умеет он достаточно много: подсказывать пути к файлам, имена переменных, методы объектов, командлеты — и все это прям как в Visual Studio.



Это настолько классная штука, что может заменить вам почти весь хелп. Пользуясь PowerTab, я открыл для себя очень много интересного и надеюсь вам он тоже поможет.

Установка



Скачиваем архив отсюда и распаковываем его в любую папку. Установку нужно производить с правами админимтратора, запуском файла Setup.Cmd.



PowerTab устанавливается довольно быстро, на все вопросы можно отвечать Yes. По умолчанию настройки сохраняются в папке «Documents\WindowsPowerShell» и если ваш существующий файл с настройками уже сужествовал, то вся информация добавляется в конец файла Microsoft.PowerShell_profile.ps1, который в PS имеет имя $PROFILE.

Примеры использования



Сразу же после установки можно приступать к работе. Попробуйте набрать set-/get- и нажать Tab и увидете желанный IntelliSence. Как я уже говорил PowerTab умеет подсказывать пути к файлам, коммандлеты и их параметры.

PT очень помагает при работе с классами .net, например, если мы хотим вызвать MessageBox, PowerTab нас спасет от набора длинной конструкции вида [System.Console]::WriteLine(«Hello, Habrahabr»)

Также PT можно отлично песонализировать. Все настройки PowerTab хранятся в объекте $PowerTabConfig. Например можно слегкостью подгрузить готовые темы для PT командой $powertabconfig.Colors.ImportTheme((import-csv ~\Desktop\PowerTab99b2-fixed\PowerTab\ThemeDragon.csv))

Чтобы увидеть все подстказки сразу можно набрать % и нажать Tab, также символ % используется для дополнения комманд, например, чтобы не писать Invoke-, можно набрать in% и нажать Tab.

В дополнение к возможностям работы с классами .net упомяну следующие фишки. Чтобы увидет все конструкторы класса можно набрать что-то вида [«имя класса .net без кавычек»] и поставить одно двоеточие и нажать Tab. А если набрать [«имя класса .net без кавычек»]= и нажать могучий Tab, то строка преобразуется в следующую New-Object «имя класса .net без ковычек».

При работе с WMI PowerTab ну просто колоссально упрощает задачу. Пробуйте Get-WmiObject Win32_ + tab, все классы как на ладони.

Ну и последняя полезная вещь о которой я хотел бы сказать, чтобы заставить PT заменять алиасы на их стандартные названия нужно выполнить команду $powertabconfig.AliasQuickExpand = $true.

UPD Возможны проблемы при запуске из-за политики выполнения скриптов. Следует изменить с «не запускать скрипты» на «запускать свои и/или подписанные». Спасибо хабраюзеру lostmsu
UPD2 Политика ставится скриптом Set-ExecutionPolicy -ExecutionPolicy remotesigned — спасибо автору статьи
Tags:
Hubs:
+13
Comments5

Articles