Заметки о выпуске Windows Management Framework (WMF) 5.x
Изменения WMF 5.0
- PowerShell 5.0 добавляет новый структурированный поток сведений
- Улучшения DSC, включая четыре новых ресурса DSC:
- WindowsFeatureSet
- WindowsOptionalFeatureSet
- ServiceSet
- ProcessSet
- Добавлено JIT-администрирование для включения администрирования на основе ролей с помощью удаленного взаимодействия PowerShell
- PowerShell 5.0 расширяет язык для включения определяемых пользователем классов и перечислений.
- Улучшены функции отладки в среде сценариев PowerShell и добавлены удаленные отладки
- Добавлены модули PowerShellGet и PackageManagement
- Расширенные журналы сценариев PowerShell и расшифровки
- Добавление командлетов синтаксиса криптографических сообщений
- WMF 5.0 включает модуль NetworkSwitchManager для Windows
- Добавлен модуль Microsoft.PowerShell.ODataUtils
- Добавлена поддержка ведения журнала инвентаризации программного обеспечения (SIL)
- Использование новых или обновлений командлетов в ответ на запросы пользователей и проблемы
Изменения WMF 5.1
WMF 5.1 включает компоненты PowerShell, WMI, WinRM и журналы инвентаризации программного обеспечения (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
- Улучшения безопасности, включая применение модулей, подписанных каталогом, поступающих с сервера pull Server и при использовании командлетов 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
- Определение запуска выпуска PowerShell с помощью $PSVersionTable
- Результаты фильтрации Get-Module с помощью параметра PSEdition с помощью параметра PSEdition
- Запретить выполнение скрипта, если не выполняется в совместимом выпуске PowerShell
- объявить совместимость модуля с определенными версиями 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
.
Улучшения Пестера
В WMF 5.1 версия Pester, которая поставляется с PowerShell, обновлена с версии 3.3.5 до 3.4.0. Это обновление позволяет улучшить поведение Пестера на Nano Server.
Изменения в Pest можно просмотреть, проверив changeLOG в репозитории GitHub.