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 ISE 中的调试功能并添加了远程调试
  • 添加了 PowerShellGet 和 PackageManagement 模块
  • 增强的 PowerShell 脚本日志记录和脚本
  • 添加加密消息语法 cmdlet
  • WMF 5.0 包括适用于 Windows 的 NetworkSwitchManager 模块
  • 添加了 Microsoft.PowerShell.ODataUtils 模块
  • 添加了对软件清单日志记录的支持(SIL)
  • 响应用户请求和问题时,将新 cmdlet 或更新 cmdlet

WMF 5.1 更改

WMF 5.1 包括随 Windows Server 2016 一起发布的 PowerShell、WMI、WinRM 和软件清单日志记录(SIL)组件。 WMF 5.1 可安装在 Windows 7、Windows 8.1、Windows Server 2008 R2、2012 和 2012 R2 上,并针对 WMF 5.0 提供多项改进,包括:

  • 新 cmdlet
  • PowerShellGet 改进包括强制实施已签名模块和安装 JEA 模块
  • PackageManagement 添加了对容器、CBS 设置、基于 EXE 的设置、CAB 包的支持
  • DSC 和 PowerShell 类的调试改进
  • 安全增强功能,包括强制实施来自请求服务器的目录签名模块以及使用 PowerShellGet cmdlet 时
  • 对许多用户请求和问题的响应

重要

在 Windows Server 2008 或 Windows 7 上安装 WMF 5.1 之前,请确认未安装 WMF 3.0。 有关详细信息,请参阅 Windows Server 2008 R2 SP1 和 Windows 7 SP1的 WMF 5.1 先决条件。

PowerShell 版本

从版本 5.1 开始,PowerShell 在不同版本中可用,这些版本表示不同的功能集和平台兼容性。

  • 桌面版: 基于 .NET Framework 构建,并与脚本和模块兼容,这些脚本和模块面向在 Windows 的完全占用版本(如 Server Core 和 Windows Desktop)上运行的 PowerShell 版本。
  • Core Edition: 基于 .NET Core 构建,并提供与脚本和模块的兼容性,这些脚本和模块面向在缩减的 Windows 版本(如 Nano Server 和 Windows IoT)上运行的 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 构造函数(哈希表)

    此哈希表的格式与 Get-Module -FullyQualifiedName相同。

    示例:using module @{ModuleName = 'PSReadLine'; RequiredVersion = '1.1'}

  • 如果模块有多个版本,PowerShell 将使用 相同的解析逻辑,并且不会返回与 相同的行为。

对 Pester 的改进

在 WMF 5.1 中,PowerShell 附带的 Pester 版本已从 3.3.5 更新到 3.4.0。 此更新为 Nano Server 上的 Pester 启用更好的行为。

可以通过在 GitHub 存储库中检查 CHANGELOG 来查看 Pest 中的更改。