. Но первым делом позвольте мне указать на две вещи, которые будут недоступны вам как пользователю PowerShell ISE.

  • Вы не сможете запускать и даже устанавливать PowerShell ISE в системе Windows Server 2008 Server Core, так как для работы ISE требуются недоступные в данном случае графические интерфейсы прикладного программирования.
  • Вы не сможете выполнять интерактивные консольные приложения в среде ISE, поскольку она не включает в себя консольные интерфейсы прикладного программирования. Впрочем, вы можете задействовать консольные приложения в неинтерактивном режиме или запускать внешний экземпляр такого приложения.

Почему среда PowerShell ISE используется не в полном объеме?

Одна из причин ограниченного применения PowerShell ISE вполне банальна: пользователи просто не осведомлены о возможностях данной среды. Когда я говорю об ограниченном использовании ISE, я имею в виду не только то обстоятельство, что вместо этой среды применяется консольное приложение PowerShell. Мое замечание касается и тех пользователей, которые работают с PowerShell ISE, но не задействуют облегчающие их задачи возможности этой оболочки.

Вторая причина ограниченного использования рассматриваемого продукта сводится к тому, что в системе Server 2008 по умолчанию устанавливается лишь консольная версия PowerShell. При этом среда PowerShell ISE не устанавливается: для ее работы требуется платформа Microsoft.NET Framework 3.5.1, которая в данном случае не развернута. Если установка платформы. NET Framework 3.5.1 не составляет для вас труда, вы можете установить среду PowerShell ISE без перезагрузки системы. Делается это так. Из серверной консоли откройте Server Manager, затем меню Features и выделите пункт Add Feature. В списке программ выберите Windows PowerShell Integrated Scripting Environment и нажмите кнопку Install. Windows предложит вам подтвердить свое желание и установить одновременно. NET Framework 3.5.1. Нажмите Yes и продолжайте выполнение процедуры установки.

Другой вариант — из командной строки консоли PowerShell можно запустить две команды:

Import-Module ServerManager
Add-windowsFeature PowerShell-ISe

Все удобства графического интерфейса

Непосредственное преимущество, получаемое пользователем при работе с PowerShell ISE, проистекает из общих возможностей этого продукта как оболочки. Вы получаете доступ ко многим комбинациям «горячих» клавиш и другим средствам, стандартным для графических приложений. Так, нажав комбинацию клавиш Ctrl+A, вы сможете выделить все содержимое окна, с помощью комбинации Ctrl+C — скопировать выделенный фрагмент, нажав клавиши Ctrl+X — вырезать его, а посредством комбинации клавиш Ctrl+V — вставить этот фрагмент в нужное место. Конечно, упомянутые функции не относятся к разряду новаторских технологий, но они раз за разом дают пользователю возможность экономить время и силы. С полным списком используемых в среде PowerShell ISE клавиатурных команд быстрого вызова можно ознакомиться по адресу tinyurl.com/3odjda4.

Еще важнее доступность этого графического приложения. И хотя пользователи, привыкшие работать с подобными программами, вполне могут оставить упомянутые достоинства без внимания, отметим, что PowerShell ISE обеспечивает:

  • наглядность — пользователь может видеть многие процессы обработки на панели инструментов;
  • подсказки — графические изображения на значках, а также ярлыки, используемые для оформления меню, указывают на назначение соответствующих элементов;
  • компактность — процесс активации элементов занимает всего лишь несколько миллисекунд.

Еще одна полезная, на мой взгляд, функция — это возможность одновременной работы с несколькими открытыми сеансами и сценариями в одном экземпляре программы. Пользователь может запускать в одном окне до восьми сеансов PowerShell и большое число сценариев. Насколько большое — не могу сказать; мне приходилось одновременно открывать до 300 коротких сценариев. На первый взгляд может показаться, что упор на графический интерфейс противоречит самому методу PowerShell. В действительности же никакого противоречия нет.

Связь PowerShell с окном консоли реализуется не с помощью интерфейсов прикладного программирования, а через концепцию конвейерной обработки. Подлинная философия PowerShell состоит в том, чтобы брать на вооружение любой инструмент, упрощающий работу.

Удаленный сеанс без хлопот

Одна из возможностей версии PowerShell 2.0 — организация удаленных сеансов. Шаг за шагом среда PowerShell ISE руководит действиями пользователя, устанавливающего интерактивный сеанс связи с удаленной системой. Прежде всего, в меню File выберите пункт New Remote PowerShell Tab (или нажмите комбинацию клавиш Ctrl+Shift+R). Система отобразит приглашение, показанное на экране 1. Введите необходимую информацию, нажмите кнопку Connect, и на экране появится стандартное диалоговое окно для введения учетных данных.

 

Организация интерактивного сеанса PowerShell на удаленной системе
Экран 1. Организация интерактивного сеанса PowerShell на удаленной системе

Альтернативный способ организации интерактивного сеанса PowerShell на удаленной системе состоит в применении команды EnterPSSession. Впрочем, я полагаю, что лучше воспользоваться меню File; так я экономлю некоторое время и ограждаю себя от массы хлопот. Поэтому вариант с выбором пункта New Remote PowerShell Tab стал для меня одним из предпочтительных методов работы.

Компактный инструмент

Я до сих пор предпочитаю пользоваться двумя хорошо мне знакомыми текстовыми редакторами (разработанным компанией SAPIEN Technologies пакетом PrimalScript и продуктом TextPad компании Helios Software Solutions), но если вы не остановили выбор ни на одном из редакторов, имейте в виду, что среда PowerShell ISE оставляет далеко позади известную программу Notepad, даже если речь идет о редактировании файлов, не являющихся сценариями.

При работе со сценариями и модулями PowerShell среда ISE обеспечивает заполнение команд и имен переменных нажатием клавиши Tab, а также выделение цветом синтаксических конструкций в различного рода маркерах (таких, как команды, имена параметров, ключевые слова). В оболочке можно также открывать любые текстовые файлы, что я считаю целесообразным на клиентских сайтах, поскольку ISE допускает применение регулярных выражений при выполнении операций поиска и замены, как показано на экране 2. Параметры Match case и Whole word используются как с применением регулярных выражений, так и без них.

 

Использование регулярных выражений в операциях поиска и замены
Экран 2. Использование регулярных выражений в операциях поиска и замены

Удобная отладка

Не приходится сомневаться в том, что PowerShell ISE действительно упрощает процесс отладки. Вот как выполняется отладка сценария в оболочке ISE. В PowerShell ISE откройте сценарий, который хотите отладить. Перед началом отладки сценарий необходимо сохранить. При работе с новым, еще не сохраненным сценарием .ps1 отладочные средства PowerShell ISE отключены.

Далее перейдите к той строке кода, где вы хотели бы приостановить его выполнение, и в меню Debug выберите пункт Toggle Breakpoint (или нажмите клавишу F9). При установке точек прерывания имейте в виду следующее.

  • Установка точек прерывания на пустых строках не допускается. Интерпретатор сценариев PowerShell игнорирует пустые строки, так что в любом случае такая точка прерывания не будет обработана.
  • Установка точек прерывания на строках комментариев возможна. Однако если за строкой комментария, содержащей точку прерывания, строк кода больше нет, точка прерывания не окажет влияния на работу сценария, поскольку выполнение сценариев PowerShell завершается с выполнением последней исполняемой строки кода. В данном случае оболочка PowerShell ISE отобразит предупреждение WARNING: Breakpoint 3 will not be hit или аналогичное сообщение.

Установив точки прерывания, в меню Debug выделите пункт Run/Continue (или нажмите клавишу F5). Оболочка ISE выполнит сценарий до первой установленной вами точки прерывания, после чего выполнение кода будет приостановлено. Далее вы сможете просмотреть текущие значения переменных, наводя на них курсор мыши в редакторе сценариев, а также отображать стек вызовов (то есть список блоков сценария, в которые вступил код). Для этого в меню Debug нужно выделить пункт Display Call Stack. Чтобы продолжить выполнение сценария, снова откройте меню Debug и выберите пункт Run/Continue (или нажмите клавишу F5). В любой момент вы можете остановить отладчик вручную, выбрав в меню Debug пункт Stop (или нажав комбинацию клавиш Shift+F5).

С помощью данного отладчика также можно обрабатывать сценарии с обязательными параметрами командной строки. После установки в сценарии точки прерывания вместо того, чтобы открывать меню Debug или нажимать клавишу F5, просто введите с клавиатуры имя сценария и необходимые параметры. Сценарий будет автоматически запущен в отладчике.

Расширяемость

В оболочке PowerShell ISE реализована еще одна полезная возможность, представляющая особый интерес для опытных пользователей: вы можете обратиться к ISE как к объекту PowerShell с помощью переменной $psISE, а затем расширить или оптимизировать ISE.

Листинг содержит несколько примеров того, как можно примерять переменную $psISE. Код во фрагменте A использует ее для расширения меню Addons. Это меню скрыто от пользователя до тех пор, пока не будут введены данные по оптимизации. В рассматриваемом случае добавляются отображаемое имя, блок сценария и клавиши быстрого вызова.

Как показывает код во фрагменте B, переменную $psISE вы можете использовать для сохранения всех выходных данных с вкладки PowerShell, на которой вы находитесь. Кроме того, с помощью этой переменной можно задавать применяемый оболочкой ISE по умолчанию размер и семейство шрифтов, как показано во фрагменте C. Это пример индивидуализации параметров, которую некоторые пользователи хотели бы осуществить в сценарии профиля PowerShell.

Более подробную информацию о том, как оптимизировать оболочку PowerShell ISE, можно найти в теме Windows PowerShell Integrated Scripting Environment (ISE) Help справочного файла PowerShell ISE.

Вопрос предпочтений

Как и в случае со многими другими компактными инструментальными средствами, ответ на вопрос, работать или не работать с оболочкой PowerShell ISE, в целом определяется предпочтениями пользователя. Поэтому тем, кто еще не пользуется современным текстовым редактором, я рекомендую испытать оболочку PowerShell ISE.

Листинг. Код для обращения к оболочке PowerShell ISE с помощью переменной $psISE

Начало фрагмента A
# Формирование дополнительного меню с помощью переменной $psISe.
# Вызов меню $Addons с целью сокращения объема текста, вводимого с клавиатуры.
$Addons = $psISe. CurrentPowerShellTab.AddonsMenu.SubMenus
# Очистка.
$Addons. Clear ()
# Добавление отображаемого имени, блока сценария и комбинации клавиш.
$Addons.Add ("Ping Google",{ping www.google.com},"Alt+P")
$Addons.Add ("Traceroute", {tracert $(read-host "Traceroute target:")},"Alt+T")
Конец фрагмента A
Начало фрагмента B
# Сохранение результатов текущего сеанса в файле с помощью переменной $psISe.
$psISe.CurrentPowerShellTab. output. Text |
set-content c:\tmp\out.txt
Конец фрагмента B
Начало фрагмента C
# Модификация шрифта отображения с помощью переменной $psISe.
# Можно использовать в файле Microsoft.PowerShellISe_profile.ps1.
$psISe.options. FontName = "Consolas"
$psISe.options. FontSize = 12
Конец фрагмента C

Алекс Ангелопулос (aka@mvps.org) — старший ИТ-консультант, специализируется на технологиях автоматизации административных задач