about_Windows_PowerShell_5.0

简短说明

介绍 Windows PowerShell 5.0 中包含的新功能。

详细说明

Windows PowerShell 5.0 包括重要的新功能,这些功能扩展了其使用范围,提高了其可用性,并允许您更轻松、更全面地控制和管理基于 Windows 的环境。

Windows PowerShell 5.0 是向后兼容的。 专为 Windows PowerShell 4.0、Windows PowerShell 3.0 和 Windows PowerShell 2.0 设计的 Cmdlet、提供程序、模块、管理单元、脚本、函数和配置文件通常无需更改即可在 Windows PowerShell 5.0 中运行。

Windows PowerShell 5.0 默认安装在 Windows Server Technical Preview 和 Windows Technical Preview 上。 要在 Windows Server 2012 R2、Windows 8.1 Enterprise 或 Windows 8.1 Pro 上安装 Windows PowerShell 5.0,请下载并安装 Windows Management Framework 5.0。 在安装 Windows Management Framework 5.0 Preview 之前,请务必阅读下载详细信息并满足所有系统要求。

您还可以在 Windows PowerShell 中的新增功能中阅读对 Windows PowerShell 5.0 的更改。

新功能

Windows PowerShell 中的新增功能

  • 从 Windows PowerShell 5.0 开始,您可以使用类、类似于其他面向对象的编程语言的正式语法和语义进行开发。 Class 、Enum 和其他关键字已添加到 Windows PowerShell 语言中,以支持新功能。 有关使用类的更多信息,请参阅 about_Classes。

  • 与 Microsoft Research 合作,添加了一个新的 cmdlet ConvertFrom-String。 ConvertFrom-String 允许您从文本字符串的内容中提取和解析结构化对象。 有关更多信息,请参阅 ConvertFrom-String。

  • 新模块 Microsoft.PowerShell.Archive 包括 cmdlet,这些 cmdlet 允许您将文件和文件夹压缩为存档(也称为 ZIP)文件,从现有 ZIP 文件中提取文件,以及使用其中压缩的较新版本的文件更新 ZIP 文件。

  • 新模块 OneGet 允许您在 Internet 上发现和安装软件包。 OneGet 模块是现有包管理器(也称为包提供程序)的管理器或多路复用器,用于将 Windows 包管理与单个 Windows PowerShell 界面统一起来。

  • 新模块 PowerShellGet 允许您在 PowerShell 资源库或内部模块存储库(可通过运行 Register-PSRepository cmdlet 进行设置)上查找、安装、发布和更新模块和 DSC 资源。

  • New-Item、Remove-Item 和 Get-ChildItem 已得到增强,以支持创建和管理符号链接。 New-Item 的 ItemType 参数接受新值 SymbolicLink。 现在,您可以通过运行 New-Item cmdlet 在单行中创建符号链接。

  • Windows PowerShell 转录已得到改进,除了控制台主机 (powershell.exe) 之外,还应用于所有托管应用程序(如 Windows PowerShell ISE)。 转录选项 (包括启用系统范围的脚本) 可以通过启用“打开 PowerShell 听录组策略”设置来配置,该设置位于管理模板/Windows 组件/Windows PowerShell 中。

  • 通过新的详细脚本跟踪功能,您可以对系统上的 Windows PowerShell 脚本使用情况进行详细跟踪和分析。 启用详细脚本跟踪后,Windows PowerShell 会将所有脚本块记录到 Windows 事件跟踪 (ETW) 事件日志 Microsoft-Windows-PowerShell/Operational。

  • 从 Windows PowerShell 5.0 开始,新的加密消息语法 cmdlet 支持使用 IETF 标准格式对内容进行加密和解密,以加密方式保护 RFC5652 记录的消息。 Get-CmsMessage、Protect-CmsMessage 和 Unprotect-CmsMessage cmdlet 已添加到 Microsoft.PowerShell.Security 模块中。

  • Microsoft.PowerShell.Utility 模块中的新 cmdlet Get-Runspace、Debug-Runspace、Get-RunspaceDebug、Enable-RunspaceDebug 和 Disable-RunspaceDebug 允许您在运行空间上设置调试选项,并在运行空间上启动和停止调试。 对于调试任意运行空间(即不是 Windows PowerShell 控制台或 Windows PowerShell ISE 会话的默认运行空间的运行空间),Windows PowerShell 允许您在脚本中设置断点,并且添加了断点会阻止脚本运行,直到您可以附加调试器来调试运行空间脚本。 对任意运行空间的嵌套调试支持已添加到运行空间的 Windows PowerShell 脚本调试器中。

  • 新的 cmdlet Enter-PSHostProcess 和 Exit-PSHostProcess 允许您在独立于 Windows PowerShell 控制台中运行的当前进程的进程中调试 Windows PowerShell 脚本。 运行 Enter-PSHostProcess 以输入或附加到特定进程 ID,然后运行 Get-Runspace 以返回进程中的活动运行空间。 在进程中调试完脚本后,运行 Exit-PSHostProcess 以与进程分离。

  • 新的 Wait-Debugger cmdlet 已添加到 Microsoft.PowerShell.Utility 模块中。 您可以运行 Wait-Debugger 以在运行脚本中的下一个语句之前停止调试器中的脚本。

  • Windows PowerShell 工作流调试器现在支持命令或 Tab 键完成,并且您可以调试嵌套工作流函数。 现在,您可以按 Ctrl+Break 在正在运行的脚本、本地和远程会话以及工作流脚本中输入调试器。

  • Debug-Job cmdlet 已添加到 Microsoft.PowerShell.Core 模块中,用于调试正在运行的 Windows PowerShell 工作流作业脚本、后台和远程会话中运行的作业。

  • 已为 Windows PowerShell 作业添加了新状态 AtBreakpoint。 当作业正在运行包含已设置断点的脚本,并且脚本已命中断点时,将应用 AtBreakpoint 状态。 当作业在调试断点处停止时,必须通过运行 Debug-Job cmdlet 来调试作业。

  • Windows PowerShell 5.0 实现了对 $PSModulePath 中同一文件夹中单个 Windows PowerShell 模块的多个版本的支持。 已向 ModuleSpecification 类添加了 RequiredVersion 属性,以帮助您获取所需的模块版本;此属性与 ModuleVersion 属性互斥。 现在,支持将 RequiredVersion 作为 Get-Module、Import-Module 和 Remove-Module cmdlet 的 FullyQualifiedName 参数值的一部分。

  • 现在,您可以通过运行 Test-ModuleManifest cmdlet 来执行模块版本验证。

  • Get-Command cmdlet 的结果现在显示 Version 列;已向 CommandInfo 类添加了新的 Version 属性。 Get-Command 显示来自同一模块的多个版本的命令。 Version 属性也是 CmdletInfo 的派生类的一部分:CmdletInfo 和 ApplicationInfo。

  • 新的 Get-ItemPropertyValue cmdlet 允许您在不使用点表示法的情况下获取属性的值。 例如,在较旧版本的 Windows PowerShell 中,您可以运行以下命令来获取 PowerShellEngine 注册表项的 Application Base 属性的值:

    $keypath = 'HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine'
    (Get-ItemProperty -Path $keypath -Name  ApplicationBase).ApplicationBase
    

    从 Windows PowerShell 5.0 开始,您可以运行

    $keypath = 'HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine'
    Get-ItemPropertyValue -Path $keypath -Name ApplicationBase
    
  • 新的 NetworkSwitch 模块包含 cmdlet,使您能够将交换机、虚拟 LAN (VLAN) 和基本第 2 层网络交换机端口配置应用于 Windows Server 2012 R2(及更高版本)徽标认证的网络交换机。

  • 已将 FullyQualifiedName 参数添加到 Import-Module 和 Remove-Module cmdlet,以支持存储单个模块的多个版本。

  • Save-Help、Update-Help、Import-PSSession、Export-PSSession 和 Get-Command 都有一个新参数 FullyQualifiedModule,类型为 ModuleSpecification。 添加此参数可按模块的完全限定名称指定模块。

  • $PSVersionTable.PSVersion 的值已更新为 5.0。

Windows PowerShell Desired State Configuration 中的新增功能

  • Windows PowerShell 语言增强功能允许您使用类定义 Windows PowerShell Desired State Configuration (DSC) 资源。 Import-DscResource 现在是真正的动态关键字;Windows PowerShell 分析指定模块的根模块,搜索包含 DscResource 属性的类。 现在,您可以使用类来定义 DSC 资源,其中模块文件夹中的 MOF 文件和 DSCResource 子文件夹都不需要。 Windows PowerShell 模块文件可以包含多个 DSC 资源类。

  • 新参数 ThrottleLimit 已添加到 PSDesiredStateConfiguration 模块中的以下 cmdlet 中。 添加 ThrottleLimit 参数以指定您希望命令同时工作的目标计算机或设备的数量。

    • Get-DscConfiguration
    • Get-DscConfigurationStatus
    • Get-DscLocalConfigurationManager
    • Restore-DscConfiguration
    • Test-DscConfiguration
    • Compare-DscConfiguration
    • Publish-DscConfiguration
    • Set-DscLocalConfigurationManager
    • Start-DscConfiguration
    • Update-DscConfiguration
  • 通过集中式 DSC 错误报告,丰富的错误信息不仅会记录在事件日志中,而且可以发送到一个中心位置以供以后分析。 您可以使用此中心位置来存储其环境中任何服务器发生的 DSC 配置错误。 在元配置中定义报表服务器后,所有错误都将发送到报表服务器,然后存储在数据库中。 无论目标节点是否配置为从请求服务器提取配置,您都可以设置此功能。

  • 对 Windows PowerShell ISE 的改进简化了 DSC 资源创作。 您现在可以执行以下作。

    • 通过在配置或节点块内的空行上输入 Ctrl+Space 列出配置或节点块中的所有 DSC 资源。
    • 枚举类型的资源属性的自动完成。
    • 根据配置中的其他资源实例,自动完成 DSC 资源的 DependsOn 属性。
    • 改进了资源属性值的 Tab 键补全。
  • 新的 DscLocalConfigurationManager 属性将配置块指定为元配置,用于配置 DSC 本地配置管理器。 此属性将配置限制为仅包含配置 DSC 本地配置管理器的项目。 在处理过程中,此配置会生成一个 *.meta.mof 文件,然后通过运行 Set-DscLocalConfigurationManager cmdlet 将其发送到相应的目标节点。

  • 现在,Windows PowerShell 5.0 中允许使用部分配置。 您可以将配置文档以片段形式传送到节点。 要使节点接收配置文档的多个片段,必须首先设置节点的 Local Configuration Manager 以指定预期的片段。

  • 跨计算机同步是 Windows PowerShell 5.0 的 DSC 中的新增功能。 通过使用内置的 WaitFor* 资源(WaitForAll、WaitForAny 和 WaitForSome),您现在可以在配置运行期间指定跨计算机的依赖关系,而无需外部编排。 这些资源通过使用 WS-Man 协议上的 CIM 连接来提供节点到节点同步。 配置可以等待另一台计算机的特定资源状态发生更改。

  • Just Enough Administration (JEA) 是一项新的委派安全功能,它利用 DSC 和 Windows PowerShell 约束的运行空间来帮助保护企业免受员工有意或无意的数据丢失或泄露。 有关 JEA 的详细信息,包括可以下载 xJEA DSC 资源的位置,请参阅 Just Enough Administration

  • 以下新 cmdlet 已添加到 PSDesiredStateConfiguration 模块中。

    • 新的 Get-DscConfigurationStatus cmdlet 从目标节点获取有关配置状态的高级信息。 您可以获取最后一个配置或所有配置的状态。
    • 新的 Compare-DscConfiguration cmdlet 将指定的配置与一个或多个目标节点的实际状态进行比较。
    • 新的 Publish-DscConfiguration cmdlet 将配置 MOF 文件复制到目标节点,但不应用配置。 配置在下一次一致性传递期间或运行 Update-DscConfiguration cmdlet 时应用。
    • 新的 Test-DscConfiguration cmdlet 允许您验证生成的配置是否与所需的配置匹配,如果配置与所需的配置匹配,则返回 True,如果实际配置与所需的配置不匹配,则返回 False。
    • 新的 Update-DscConfiguration cmdlet 会强制处理配置。 如果本地配置管理器处于拉取模式,则 cmdlet 会在应用配置之前从拉取服务器获取配置。

Windows PowerShell ISE 中的新增功能

  • 现在,您可以在 Windows PowerShell ISE 的本地副本中编辑远程 Windows PowerShell 脚本和文件,方法是运行 Enter-PSSession 在存储要编辑的文件的计算机上启动远程会话,然后运行 PSEdit <path and file name on the remote computer>. 此功能简化了编辑存储在 Windows Server 的 Server Core 安装选项上的 Windows PowerShell 文件,其中 Windows PowerShell ISE 无法运行。
  • Windows PowerShell ISE 现在支持 Start-Transcript cmdlet。
  • 现在,您可以在 Windows PowerShell ISE 中调试远程脚本。
  • 新的菜单命令 Break All (Ctrl+B) 可进入本地和远程运行脚本的调试器。

Windows PowerShell Web 服务中的新增功能(管理 OData IIS 扩展)

  • 从 Windows PowerShell 5.0 开始,您可以通过运行 Export-ODataEndpointProxy cmdlet 来基于给定 OData 端点公开的功能生成一组 Windows PowerShell cmdlet。

Windows PowerShell 5.0 中值得注意的 bug 修复

  • Windows PowerShell 5.0 包括一个新的 COM 实现,当您在使用 COM 对象时,它提供了显著的性能改进。

有关 Windows PowerShell 5.0 的更多信息,请访问以下网站:

另请参阅

about_Classes

about_Debuggers

about_Desired_State_Configuration

about_Updatable_Help

Save-帮助

获取模块

调试作业

Update-帮助

获取进程

删除计算机

Set-ExecutionPolicy(设置执行策略)

添加计算机

ConvertFrom-String

调用 RestMethod

Set-JobTrigger

Set-ScheduledJob

New-JobTrigger

Register-ScheduledJob

启用-JobTrigger

禁用 JobTrigger

关键字

Windows PowerShell 5.0 中的新增功能