Заметки о выпуске Windows Management Framework (WMF) 5.x

Изменения WMF 5.0

  • В PowerShell 5.0 добавлен новый структурированный поток сведений
  • Усовершенствования DSC, включая четыре новых ресурса DSC:
    • WindowsFeatureSet
    • WindowsOptionalFeatureSet
    • ServiceSet
    • ProcessSet
  • Добавлена Just Enough Administration для обеспечения ролевого администрирования через удаленное взаимодействие PowerShell
  • PowerShell 5.0 расширяет язык, включив пользовательские классы и перечисления
  • Усовершенствованы функции отладки в интегрированной среде сценариев PowerShell и добавлена удаленная отладка
  • Добавлены модули PowerShellGet и PackageManagement
  • Расширено ведение журнала сценариев и записи PowerShell
  • Добавлены командлеты Cryptographic Message Syntax
  • WMF 5.0 включает в себя модуль NetworkSwitchManager для Windows
  • Добавлен модуль Microsoft.PowerShell.ODataUtils
  • Добавлена поддержка инвентаризации программного обеспечения (SIL)
  • Представлены новые или обновленные командлеты сервера по запросам пользователей и для решения проблем

Изменения WMF 5.1

WMF 5.1 включает компоненты PowerShell, WMI, WinRM и Software Inventory Logging (SIL), которые были выпущены с Windows Server 2016. Службу WMF 5.1 можно установить на Windows 7, Windows 8.1, Windows Server 2008 R2, 2012 и 2012 R2; она предоставляет ряд улучшений в WMF 5.0, включая следующие:

  • Новые командлеты
  • Улучшения PowerShellGet включают принудительное подписание модулей и установку модулей JEA.
  • Дополнительная поддержка PackageManagement для контейнеров, установка CBS, установка на основе EXE, пакеты CAB.
  • Улучшения отладки для классов DSC и PowerShell.
  • Улучшения для системы безопасности, включая принудительное использование модулей, подписанных каталогом и полученных от опрашивающего сервера, а также при использовании командлетов PowerShellGet.
  • Ответы на разные запросы пользователей и решение проблем.

Важно!

Перед установкой WMF 5.1 в Windows Server 2008 или Windows 7 убедитесь, что WMF 3.0 не установлен. Дополнительные сведения см. в статье о предварительных требованиях WMF 5.1 для Windows Server 2008 R2 с пакетом обновления 1 (SP1) и Windows 7 с пакетом обновления 1 (SP1).

Выпуски PowerShell

Начиная с версии 5.1 доступны различные выпуски среды PowerShell, что означает различные наборы возможностей и совместимость с разными платформами.

  • Desktop Edition: создан на базе платформы .NET Framework и обеспечивает совместимость со сценариями и модулями, предназначенными для версий PowerShell в полноценных выпусках Windows, таких как Server Core и Windows Desktop.
  • Core Edition: построен на основе .NET Core и обеспечивает совместимость со скриптами и модулями, которые предназначены для версий PowerShell, выполняющихся в выпусках Windows с ограниченными возможностями, таких как Nano Server и Windows IoT.

Дополнительные сведения об использовании выпусков PowerShell

Кэш анализа модуля

Начиная с версии WMF 5.1 среда PowerShell предоставляет средства управления файлом, в котором кэшируются сведения о модуле, например экспортируемые им команды.

По умолчанию этот кэш хранится в файле ${env:LOCALAPPDATA}\Microsoft\Windows\PowerShell\ModuleAnalysisCache. Кэш обычно считывается при запуске в процессе поиска команды и записывается в фоновом потоке через некоторое время после импорта модуля.

Чтобы изменить расположение кэша по умолчанию, присвойте значение переменной среды $env:PSModuleAnalysisCachePath перед запуском PowerShell. Изменения, вносимые в эту переменную среды, влияют только на дочерние процессы. Значение должно быть полным путем (включая имя файла), на создание и запись файлов по которому у среды PowerShell есть разрешение. Чтобы отключить файловый кэш, укажите в качестве этого значения недопустимое расположение, например:

$env:PSModuleAnalysisCachePath = 'nul'

Таким образом задается путь к недопустимому устройству. Если среда PowerShell не может осуществлять запись по указанному пути, ошибка не выводится; сообщения об ошибках можно получить, используя трассировщик:

Trace-Command -PSHost -Name Modules -Expression { Import-Module Microsoft.PowerShell.Management -Force }

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

$env:PSDisableModuleAnalysisCacheCleanup = 1

Новое значение этой переменной среды вступает в силу немедленно в текущем процессе.

Указание версии модуля

В WMF 5.1 using module работает так же, как другие связанные с модулями конструкции в PowerShell. Ранее не было возможности указать определенную версию модуля; при наличии нескольких версий возникала ошибка.

В WMF 5.1:

  • Вы можете использовать конструктор ModuleSpecification (Hashtable).

    Она имеет тот же формат, что и Get-Module -FullyQualifiedName.

    Примерusing module @{ModuleName = 'PSReadLine'; RequiredVersion = '1.1'}

  • Если имеется несколько версий модуля, в PowerShell используется та же логика разрешения, что и в Import-Module, и ошибка не выводится. Это поведение аналогично поведению Import-Module и Import-DscResource.

Усовершенствования Pester

В WMF 5.1 обновлена версия Pester, распространяемая с PowerShell, с 3.3.5 до 3.4.0. Это обновление улучшает работу Pester на сервере Nano Server.

Изменения в Pest можно просмотреть в журнале изменений в репозитории GitHub.