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 企业版或 Windows 8.1 专业版上安装 Windows PowerShell 5.0,请下载并安装 Windows Management Framework 5.0。 在安装 Windows Management Framework 5.0 预览版前,请务必阅读下载详细信息并确保满足所有系统要求。

还可以在 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 包括了使你能够将文件和文件夹压缩到存档文件(也被称为 ZIP)、从现有 ZIP 文件中提取文件以及使用其中压缩的较新版本文件更新 ZIP 文件的 cmdlet。

  • 通过 OneGet 新模块,可以在 Internet 上发现和安装软件包。 OneGet 模块是现有包管理器的管理器或多路复用器, (也称为包提供程序,) 使用单个Windows PowerShell接口统一 Windows 包管理。

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

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

  • 除了控制台主机 (powershell.exe) 外,Windows PowerShell 转录已经得到改进以应用到所有主机应用程序(例如 Windows PowerShell ISE)。 脚本选项(包括启用 system-wide 脚本)可以通过启用“打开 PowerShell 脚本” 组策略设置(位于 Administrative Templates/Windows Components/Windows PowerShell)来进行配置。

  • 新的“详细脚本跟踪”功能让你能够启用系统上使用的 Windows PowerShell 脚本的详细跟踪和分析。 在启用详细脚本跟踪后,Windows PowerShell 会将所有的脚本块记录到 Microsoft-Windows-PowerShell/Operational 的 Windows 事件跟踪 (ETW) 事件日志中。

  • 从 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 脚本调试器中。

  • 新的 Enter-PSHostProcess 和 Exit-PSHostProcess cmdlet 使你能够在独立于正在 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 模块的多个版本的支持。 已将 RequiredVersion 属性添加到 ModuleSpecification 类,以帮助你获取模块的所需版本;此属性与 ModuleVersion 属性互斥。 RequiredVersion 现在作为 Get-Module、Import-Module 和 Remove-Module cmdlet 的 FullyQualifiedName 参数的值的一部分受到支持。

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

  • 现在 Get-Command cmdlet 的结果显示版本列;一个新的版本属性已添加到 CommandInfo 类中。 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 拥有一个新的参数,ModuleSpecification 类型的 FullyQualifiedModule。 添加此参数以按模块的完全限定名称来指定它。

  • $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 中现允许部分配置。 可以将配置文档以片段的形式传递到节点。 对于要接收配置文档的多个片段的节点,必须首先设置该节点的本地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 的服务器核心安装选项(Windows PowerShell ISE 无法在其中运行)上的 Windows PowerShell 文件。
  • Windows PowerShell ISE 中现在支持 Start-Transcript cmdlet。
  • 现在可以在 Windows PowerShell ISE 中调试远程脚本。
  • 新的菜单命令 Break All (Ctrl+B) 会强行进入本地和远程运行的脚本的调试器中。

Windows PowerShell Web 服务(Management 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-Help

Get-Module

Debug-Job

Update-Help

Get-Process

Remove-Computer

Set-ExecutionPolicy

Add-Computer

ConvertFrom-String

Invoke-RestMethod

Set-JobTrigger

Set-ScheduledJob

New-JobTrigger

Register-ScheduledJob

Enable-JobTrigger

Disable-JobTrigger

关键 字

Windows PowerShell 5.0 中的新增功能