Новые возможности PowerShell 5.0

Новые возможности PowerShell 5.0

Большинство последних новинок Microsoft направлено на упрощение создания и управления вычислительных сред. В предрелизе WMF 5.0 заявлено хотя и небольшое количество новинок, но тем не менее они очень интересны.

Вышедший год назад Windows Server 2012 R2 вместе с PowerShell 4.0 получил интересную технологию — настройки требуемого состояния (Desired State Configuration, DSC) позволяющую разворачивать роли и контролировать состояние большого количества систем. Это явный шаг вперед, но пока еще недостаточный чтобы тягаться с unixовскими аналогами Puppet или Chef. Причина проста — установка любого софта ограниченного возможностями Windows Update. Здесь Windows явно проигрывает Unix количественно. Ведь не секрет что в репозитариях любого дистрибутива Linux можно найти тысячи программ на все случаи и которые ставятся одной командой. В DSC все действия на конечной системе выполняются при помощи ресурсов или провайдеров, на момент релиза их насчитывалось всего 12, и с их помощью можно было выполнить относительно простые задачи.

В мае 2014 стала доступна новая версия Windows Management Framework 5.0 Preview.

Список новинок назвать большим не получается: обновились DSС и среда Integrated Scripting Environment (ISE), три новых модуля — PackageManagement (ранее OneGet), модулей PowerShellGet и NetworkSwitch, плюс 14 новых командлетов (всего 30). Новый релиз пока будет работать только в английской версии Windows 8.1 и Windows Server 2012 R2, возможно к финалу это изменится

Из 14 командлетов большая часть позволяет получить определенную информацию: Get-ItemPropertyValue, Debug-Job, Get-CounterSample, Get-PerfomanceCollectro, Get-ServerBpaResult, Get-ServerClusterName, Get-ServerEvent, Get-ServerFeature, Get-ServerInventory, Get-ServerService, Get-StreamHash, Remove-ServerPerfomanceLog, Start-PerfomanceCollector и Stop-PerfomanceCollector. Назначение многих очевидно. Но документация по новинкам еще не полная и готовых примеров нет. Вероятно это исправят в релизу, наиболее интересен командлет Debug-Job. Указав в параметрах имя или Id процесса мы можем просмотреть отладочную информацию (рис.1).

Новые ресурсы DSC

В месте с WMF 5.0 поставляется новая версия DSC Resource Kit Wave 4 в которой появилось 6 модулей, содержащих 16 новых ресурсов и 3 ресурса обновлено (xPSDesiredStateConfiguration, xDscResourceDesigner, xDscDiagnostics). Названия новых модулей говорят сами за себя:

  • xAzure — включает 6 DSC ресурсов для работы с Microsoft Azure;
  • xJEA — 2 ресурса для настройки JEA (Just Enough Admin);
  • xDnsServer — 2 ресурса для настройки Secondary zone и ZoneTransfer;
  • xDhcpServer — 3 ресурса позволяющих указать параметры DHCP сервера;
  • xWinEventLog — 1 ресурсами
  • в xActiveDirectory добавлен xADDomainTrust.

После установки обновления команда Get-DSCResource покажет, что их общее количество составляет уже 67. Загрузить новые ресурсы можно и без установки WMF 5.0, используя PowerShellGet или при помощи PowerShell:

PS > Get-HotFix -Id KB2883200

PowerShellGet

По мере развития PowerShell стал обрастать модулями и дополнениями. Их стало на столько много, что найти нужный большая проблема и часто хорошие проекты просто теряются. Решение очень простое — создать репозитарий модулей. Так и появился PowerShellGet — менеджер пакетов для модулей PowerShell. Нужно отметить что Microsoft не стали изобретать велосипед, а взяли наработки проекта NuGet и построив по верх него новый модуль PowerShellGet. Избавив себя от разработки протокола и инструментом управления репозитарием. Естественно поддерживаются все репозитарии совместимые с NuGet. Модуль содержит 4 командлета: Find-Module, Install-Module, Publish-Module и Uninstall-Module.

PS > Get-Command -Module PowerShellGet

Попробуем найти модуль xPSDesiredStateConfiguration

PS > Find-Module xPSDesiredStateConfiguration

Подтверждаем запрос на подключение к NuGet. Если нужный модуль в репозитарии есть, устанавливаем его при помощи командлета Install-Module.

PS > Install-Module xPSDesiredStateConfiguration

 

Предусмотрена возможность создания собственного репозитария. Процесс состоит из двух этапов: создание репозитария и его подключение при помощи переменных PowerShellGet. Построить свой репозитарий можно при помощи NuGet, специального инструмента NuGetGallery (требует Visual Studio и развертывания IIS) или воспользоваться возможностями онлайн хранилища ProGet [6]. Последний самый наверное быстрый и удобный, позволяет создавать локальные репозитарии и получать к ним доступ при помощи веб-интерфейса, утилиты NuGet Package Explorer или средствами OneGet. Предлагается две версии: Free и Enterprise. Бесплатной вполне хватает для многих задач. Поддерживается установка от Windows XP и новее, также потребуется IIS от 7 с ASP.NET 4.0 и SQL Server от 2005. Все подробности по развертыванию изложены в документации ProGet. Если нужно подключить свой репозитарий то указываем его URL в переменных PSGalleryPublishUri и PSGallerySourceUri. По многим вопросам развертывания наилучшим пособием будет документация MSDN.

Модуль Network Switch

В Windows Server 2012 была представлена концепция Data Center Abstraction (DAL) — представляющая собой уровень абстракции использующий стандарты DMTF и Windows CIM для управления всеми ресурсами ЦОД: физические серверы, устройства хранения данных, сетевых устройств, гипервизоры, операционные системы, приложения и сервисы и так далее. То есть любой разработчик может предложить свои совместимые инструменты для управления датацентрами на базе Windows. В том числе такая возможность была реализована и при помощи CIM командлетов, хотя наглядной и удобной их применение назвать нельзя.
В WMF 5.0 добавлен модуль управления NetworkSwitch, использующий DAL и позволяющий управлять сетевыми L2 уровня коммутаторами Windows. Команда:

PS > Get-Command -Module NetworkSwitch

Покажет что модуль включает 19 командлетов.

Документация пока по командлетам довольно скупая и здесь придется немного поэкспериментирорвать. При этом для создания и правления виртуальным роутером по прежнему задействуются CIM командлеты.
Создаем CIM сессию, объявляем переменные:

PS> $ip = "192.168.0.2" PS> $sessionOption = New-CimSessionOption -UseSsl -SkipCACheck -SkipCNCheck -SkipRevocationCheck PS> $s = New-CimSession -CN $ip -port 1234 -Auth Basic -Credential admin -SessionOption $sessionOption

Используя Get-NetworkSwitchFeature можем просмотреть настройки:

PS> Get-NetworkSwitchFeature -CimSession $s

Список портов:

PS> Get-NetworkSwitchEthernetPort -CimSession $s | Format-Table InstanceID, ElementName, MaxSpeed, PortNumber, EnabledState

Чтобы отключить определенный порт применяем командлет Disable-NetworkSwitchEthernetPort:

PS>  Disable-NetworkSwitchEthernetPort -PortNumber 1 -CimSession $s

И смотрим его состояние:

 

PS>Get-NetworkSwitchEthernetPort -PortNumber 1 -CimSession $s | FT InstanceID, ElementName, MaxSpeed, PortNumber, EnabledState

DSC для Linux

Эта функция не идет в комплекте с WMF 5.0, но тем не менее она стоит того чтобы хотя бы вкратце упомянуть в обзоре. Тем более что DSC для Linux уже достиг состояния 1.0.0. И теперь мы можем использовать для управления конфигурацией Linux и Windows одну и туже же платформу. В настоящее время реализованы 5 типов ресурсов:

  • nxFile — управление файлами и каталогами;
  • nxScript — запуск сценариев на целевых узлах;
  • nxUser — управление учетными записями пользователей Linux;
  • nxGroup — управление учетными записями групп Linux;
  • nxService — управляет сервисами/демонами Linux (System-V, upstart, Systemd)

Для работы используется OpenSource реализация Open Management Infrastructure (OMI) в качестве CIM сервера и протокол на основе SOAP — WS-Management.
Поддерживается только “push” режим. Соответственно принцип использования немного отличается от управления Windows системами. А процесс развертывания требует внимательности.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *