PowerShell – новая командная оболочка для Windows

 Вначале давайте определимся, а зачем в эпоху 3D-интерфейсов нужны текстовая консоль и скриптовый язык. Возможно, обычному пользователю, работающему за  компьютером и выполняющему повседневные задачи, действительно нет необходимости использовать консоль. Даже более того, большая часть таких пользователей наверняка и не догадывается о такой штуке, как cmd.exe. и при попытке узнать свой IР долго что-то ищут в Сетевых подключениях. Но для специалистов, занимающихся обслуживанием систем, удобнее именно консоль. Работает она быстрее, отсюда можно получить больше информации и доступ практически ко всем настройкам, которые вообще возможны в системе. И главное, все это можно делать удаленно и одновременно на большом количестве компьютеров.

В ранних версиях Windows эти задачи приходилось решать при помощи разных инструментов: скриптов ВАТ. VBScript. WSH (Windows Script Host). WM I (Windows Management Instrumentation), утилит Sysintemals. И даже типичного SSH (Unix). Естественно, это было неудобно, а WSH и WMI требовали основательной подготовки и были небезопасны.

PowerShell (ранее Monad) анонсирован в 2006, и первый релиз привлек достаточное внимание. По сути PowerShell – это еще одна (запускается в отдельной консоли) командная оболочка и среда для выполнения сценариев, дающая удобный доступ к объектам .NET и свободно ими оперирующая. В результате администратор получает в свои руки единое окружение, в котором можно управлять системами и получать необходимую информацию. К тому же с версии 2.0 (СТРЗ) PowerShell получил еще одну важную возможность PowerShell Remoting – удаленное управление. И более того. PowerShell уже встроен в некоторые инструменты в новых версиях приложений от Microsoft – центр администрирования Active Directory в Windows 2008 R2. Microsoft SQL Server 2008. Microsoft Exсhange Server и др. Так что теперь деваться от PowerShell некуда.

Команды в PowerShell называют командлетами (cmdlets) и они являются своеобразным черным ящиком, который принимает параметры и выдает результат. То, что скрыто внутри, знать необязательно. В поставке первой версии было около 100 командлетов, во второй к ним добавилось еще 240. Кроме этого любой желающий может создать свой командлет или записать все команды в сценарий PowerShell (расширение .psi). В Интернете можно найти несколько репозитариев, представляющих готовые решения для большинства задач. Например, специализированные командлеты для управления объектами Active Direcory – Quest AD PowerShell cmdlets (QAD cmdlets) или репозитарий Cmdlet Directory, созданный сообществом PowerShell.

Чтобы такое большое количество команд не вызывало путаницы, принята единая система наименований. Как правило, имя командлэта состоит из пары «действие – объект». В качестве первой части используется слово английского языка: Enable (включить), Disable (отключить), Get (получить), Set (установить), Add (добавить), Clear (очистить, удалить) и т. д. Вторая часть указывает объект, к которому будет применена команда. В итоге назначение командлета понятно из его названия и сориентироваться достаточно просто.

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

Есть четыре политики:

 - Restricted – для выполнения отдельных команд, сценарии запрещены;

 - AllSigned – разрешено выполнение подписанных сценарием команд, перед запуском запрашивается подтверждение;

 - RemoteSigned - все как у предыдущей политики, только не запрашивается выполнение сценариев, подписанных надежным издателем и локальных сценариев;

 - Unrestricted - можно запускать неподписанные сценарии (самый небезопасный вариант).

Поддерживаются различные подстановки и конвейеры, когда результат одной команды перенаправляется на вход другой (кто программировал в Unix, тот знает). Например, чтобы увидеть все процессы, начинающиеся на «п», поступаем просто: PS> Get-Process п

Конвейеры подключаются просто. Например, часто для форматирования вывода используется командлет Format-List. Получим список дисков:

PS> Get-PSDrive I Format-List Кстати, сравните вывод команды Get- PSDrive с и без использования Format-List. Здесь всплывает еще одна особенность PowerShell. По умолчанию вывод команды уже форматирован и сюда попадают не все данные. Так сделано специально, ведь количество данных велико. И чтобы получить действительно необходимую информацию ее нужно запросить специально.

Для часто вводимых команд предусмотрена возможность задания простых псевдонимов (алиасов), В PowerShell уже есть некоторые алиасы. Просмотреть их просто:

PS> get-alias

Следует отметить также еще такие удобства – автодополнение команд и параметров, а также поиск команды. Для этого при вводе дос гаточно нажать на Tab.

Специальная переменная «$_» ссылается на текущий объект. Список доступных всех свойств объекта можно получить при помощи «Format-List ».

PS> Get-Service I Format-List

Уже можно использовать IDE для Программирования на PowerShell. В поставке PowerShell v2 доступна графическая среда Windows PowerShell Integrated Scripting Environment (ISE), но многие предпочитают использовать альтернативные инструменты.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий