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

Революция рабочих классов

Командная строка Windows долгое время воспринималась как наследие эпохи MS-DOS. Продвинутые пользователи выполняли в ней простейшие bat-файлы для упрощения рутинных операций вроде установки и обновления программ, регулярного архивирования документов и выключения компьютеров по расписанию. Двенадцать лет назад Microsoft стала постепенно расширять набор функций командного интерпретатора за счет оболочки PowerShell. С каждой новой версией она становилась все мощнее, пока полностью не изменила представление о встроенных средствах автоматизации.

Постепенно благодаря платформе .NET, поддержке языка сценариев и другим нововведениям простые пакетные файлы выросли до полноценных скриптов. Самая свежая, пятая версия PowerShell и вовсе стала революционной за счет поддержки классов. Вызывать ее в Windows 10 TP можно, просто написав PowerShell в меню поиска, заменившего пункт «Выполнить» в панели «Пуск».

Вызов Power Shell в Windows 10 TP
Вызов Power Shell в Windows 10 TP

Узнать версию установленной оболочки легко с помощью следующей команды:

PS C:\> $PSVersionTable.PSVersion
Проверка версии PowerShell
Проверка версии PowerShell

Окно в Linux

Второе впечатляющее нововведение — это фреймворк OneGet. Он позволяет устанавливать программы из магазина Windows Store и партнеров Microsoft с помощью менеджера Chocolatey примерно так же, как это делает любой пакетный менеджер в Linux — скачивая дистрибутивы из репозиториев. Больше никаких ручных поисков софта, загрузки установочных файлов через браузер, медитирования во время их распаковки и бесконечных кликов «Далее»! Установка многих программ в Windows выполняется в одну строку:

Install-Package ИмяПрограммы

Ключ -Force, указанный после имени программы, подавляет вывод запросов на подтверждение действий. Однако если введенное название не идентифицирует программу уникально, а приложения и плагины с таким набором символов находятся на разных ресурсах, то предварительно следует выполнить обнаружение пакета командой Find-Package.

Если пакета нет на удаленном узле из списка доверенных источников, то скачивание с другого сетевого ресурса потребуется подтвердить (см. скриншот с установкой Skype).

Установка Skype из PowerShell
Установка Skype из PowerShell

Обычно проще сразу добавить Chocolatey в качестве доверенного узла. Сделать это можно при помощи команды регистрации нового источника программ и обновлений:

Register-PackageSource -Name chocolatey -Provider PSModule -Trusted -Location
http://chocolatey.org/api/v2/ -Verbose

INFO

На момент написания статьи менеджер пакетов Chocolatey поддерживал свыше 2500 пакетов. Для него есть графическая оболочка ChocolateyGUI, работающая подобно линуксовой Synaptic для APT.

Командный интерпретатор и его командлеты

Основную мощь PowerShell обеспечивают командлеты — отдельные классы платформы .NET. В PowerShell 5.0 появилось несколько новых командлетов, упрощающих выполнение типовых задач.

Например, модуль Microsoft.PowerShell.Archive содержит набор командлетов для работы с архивами в формате ZIP, а командлет ConvertFrom-String позволяет извлекать и анализировать структурированные объекты из текстовых строк.

Для более удобной работы с ключами и сертификатами были добавлены командлеты Get-CmsMessage, Protect-CmsMessage и Unprotect-CmsMessage. Они обеспечивают поддержку криптографического синтаксиса согласно RFC5652.

Помимо добавления новых классов платформы .NET, в пятой версии PowerShell были обновлены и хорошо известные. Например, командлеты для управления элементами файловой системы (New-Item, Remove-Item и Get-ChildItem) теперь поддерживают символьные ссылки.

В PS 5.0 значительно улучшились и средства отладки сценариев. Новая функция отслеживания подробно протоколирует работу скриптов. Увидеть ее результаты можно в журналах событий Windows, где теперь доступны детальные логи.

Появилась возможность с помощью набора командлетов Get-Runspace, Debug-Runspace, Get-RunspaceDebug, Enable-RunspaceDebug и Disable-RunspaceDebug выполнять отладку в любой области памяти, а не только в заданной по умолчанию. Теперь PowerShell позволяет устанавливать по F9 точки останова в несохраненных и активных сценариях. Кроме того, он поддерживает вложенную отладку, необходимую для анализа дочерних процессов отдельно от родительского.

Есть в PS 5.0 и ряд общих изменений. В новой оболочке была реализована поддержка нескольких версий одного модуля, расположенных в той же папке. Требуемая версия может указываться в командлетах Get-Module, Import-Module и Remove-Module. Проверка версии модуля выполняется с помощью командлета Test-ModuleManifest.

Изменился и принцип работы с сетью за счет добавления уровней абстракции. В модуле NetworkSwitch появились командлеты для виртуализации сетевых подключений. Пока работать они будут только с сетевым оборудованием партнерских фирм, прошедшим сертификацию Microsoft. Сейчас к нему относятся только коммутаторы производства Cisco и Huawei, но список явно расширится в ближайшее время.

Как и прежде, оболочка PowerShell обеспечивает легкую читаемость кода, характерную для всех языков высокого уровня. Она работает поверх общеязыковой исполняющей среды (CLR), которая переводит код на общем промежуточном языке (CIL, часто называемый ассемблером виртуальной машины платформы .NET) в байт-код.

Новую версию PowerShell можно будет загрузить в составе Windows Management Framework 5.0 с сайта Microsoft, а в Windows 10 TP оболочка уже интегрирована. Ее апдейт происходит через общий центр обновлений.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии