安装 Windows PowerShell SDK

适用于:Windows PowerShell 2.0、Windows PowerShell 3.0

以下主题介绍如何在不同版本的 Windows 上安装 PowerShell SDK。

安装适用于 Windows 8 和 Windows Server 2012 的 Windows PowerShell 3.0 SDK

Windows PowerShell 3.0 随 Windows 8 和 Windows Server 2012 自动安装。 此外,还可以下载并安装 Windows PowerShell 3.0 的引用程序集作为 Windows 8 SDK 的一部分。 这些程序集允许你为 Windows PowerShell 3.0 编写 cmdlet、提供程序和主机程序。 安装适用于 Windows 8 的 Windows SDK 时,Windows PowerShell 程序集会自动安装在引用程序集文件夹中,\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\3.0。 有关详细信息,请参阅 Windows 8 SDK 下载站点。 powershell-sdk-samples 存储库中也提供了 Windows PowerShell 代码示例。

引用程序集

引用程序集默认安装在以下位置:C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\V1.0

注释

无法将针对 Windows PowerShell 2.0 程序集编译的代码加载到 Windows PowerShell 1.0 安装中。 但是,针对 Windows PowerShell 1.0 程序集编译的代码可以加载到 Windows PowerShell 2.0 安装中。

示例

代码示例默认安装在以下位置:C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\。 以下部分简要介绍了每个示例的作用。

Cmdlet 示例

  • GetProcessSample01 - 演示如何编写一个简单的 cmdlet 来获取本地计算机上的所有进程。
  • GetProcessSample02 - 演示如何向 cmdlet 添加参数。 该 cmdlet 采用一个或多个进程名称并返回匹配的进程。
  • GetProcessSample03 - 演示如何添加接受管道输入的参数。
  • GetProcessSample04 - 演示如何处理非终止错误。
  • GetProcessSample05 - 演示如何显示指定进程的列表。
  • SelectObject - 演示如何编写筛选器以仅选择某些对象。
  • SelectString - 演示如何搜索指定模式的文件。
  • StopProcessSample01 - 演示如何实现 PassThru 参数,以及如何通过调用 ShouldProcess 和 ShouldContinue 方法请求用户反馈。 用户想要强制 cmdlet 返回对象时指定 PassThru 参数,
  • StopProcessSample02 - 演示如何停止特定进程。
  • StopProcessSample03 - 演示如何声明参数的别名以及如何支持通配符。
  • StopProcessSample04 - 演示如何声明参数集、cmdlet 用作输入的对象,以及如何指定要使用的默认参数集。

远程处理示例

  • RemoteRunspace01 - 演示如何创建用于建立远程连接的远程运行空间。
  • RemoteRunspacePool01 - 演示如何构造远程运行空间池,以及如何使用此池并发运行多个命令。
  • Serialization01 - 演示如何查看现有的 .NET 类,并确保跨序列化/反序列化保留此类所选公共属性中的信息。
  • Serialization02 - 演示如何查看现有的 .NET 类,并确保当类的公共属性中的信息在公共属性中不可用时,在序列化/反序列化中保留此类实例中的信息。
  • Serialization03 - 演示如何查看现有的 .NET 类,并确保此类和派生类的实例被反序列化(解除冻结)到实时 .NET 对象。

事件示例

  • Event01 - 演示如何通过派生自 ObjectEventRegistrationBase 创建用于事件注册的 cmdlet。
  • Event02 - 演示如何显示如何接收远程计算机上生成的 Windows PowerShell 事件的通知。 它使用通过 Runspace 类公开的 PSEventReceived 事件。

托管应用程序示例

  • Runspace01 - 演示如何使用 PowerShell 类同步运行 Get-Process cmdlet。 Get-Process cmdlet 返回本地计算机上运行的每个进程的 Process 对象。
  • Runspace02 - 演示如何使用 PowerShell 类同步运行 Get-ProcessSort-Object cmdlet。 Get-Process cmdlet 返回本地计算机上运行的每个进程的 Process 对象,Sort-Object 根据其 Id 属性对对象进行排序。 这些命令的结果通过使用 DataGridView 控件显示。
  • Runspace03 - 演示如何使用 PowerShell 类同步运行脚本,以及如何处理非终止错误。 该脚本接收进程名称列表,然后检索这些进程。 脚本的结果(包括运行脚本时生成的任何非终止错误)将显示在控制台窗口中。
  • Runspace04 - 演示如何使用 PowerShell 类运行命令,以及如何捕获运行命令时引发的终止错误。 运行两个命令,最后一个命令传递的参数参数无效。 因此,不会返回任何对象,并引发终止错误。
  • Runspace05 - 演示如何将管理单元添加到 InitialSessionState 对象,以便打开运行空间时,管理单元的 cmdlet 可用。 管理单元提供一个 Get-Proc cmdlet(由 GetProcessSample01 示例定义),该 cmdlet 使用 PowerShell 对象同步运行。
  • Runspace06 - 演示如何将模块添加到 InitialSessionState 对象,以便在打开运行空间时加载该模块。 该模块提供一个 Get-Proc cmdlet(由 GetProcessSample02 示例定义),该 cmdlet 使用 PowerShell 对象同步运行。
  • Runspace07 - 演示如何创建 runspace,然后使用该 Runspace 通过 PowerShell 对象同步运行两个 cmdlet。
  • Runspace08 - 演示如何将命令和参数添加到 PowerShell 对象的管道,以及如何同步运行命令。
  • Runspace09 - 演示如何将脚本添加到 PowerShell 对象的管道,以及如何异步运行脚本。 事件用于处理脚本的输出。
  • Runspace10 - 演示如何创建默认的初始会话状态、如何将 cmdlet 添加到 InitialSessionState、如何创建使用初始会话状态的运行空间,以及如何使用 PowerShell 对象运行命令。
  • Runspace11 - 演示如何使用 ProxyCommand 类创建调用现有 cmdlet 但限制可用参数集的代理命令。 然后,将代理命令添加到用于创建受约束运行空间的初始会话状态。 这意味着用户只能通过代理命令访问 cmdlet 的功能。
  • PowerShell01 - 演示如何使用 InitialSessionState 对象创建受约束的运行空间。
  • PowerShell02 - 演示如何使用运行空间池并发运行多个命令。

主机示例

  • Host01 - 演示如何实现使用自定义主机的主机应用程序。 在此示例中,将创建一个使用自定义主机的运行空间,然后使用 PowerShell API 运行调用 exit的脚本。 然后,主机应用程序查看脚本的输出并输出结果。
  • Host02 - 演示如何编写使用 Windows PowerShell 运行时和自定义主机实现的主机应用程序。 主机应用程序将主机区域性设置为德语,运行 Get-Process cmdlet,并使用 pwrsh.exe显示结果,然后用德语输出当前数据和时间。
  • Host03 - 演示如何生成基于控制台的交互式主机应用程序,该应用程序从命令行读取命令,执行命令,然后将结果显示到控制台。
  • Host04 - 演示如何生成基于控制台的交互式主机应用程序,该应用程序从命令行读取命令,执行命令,然后将结果显示到控制台。 此主机应用程序还支持显示允许用户指定多个选项的提示。
  • Host05 - 演示如何生成基于控制台的交互式主机应用程序,该应用程序从命令行读取命令,执行命令,然后将结果显示到控制台。 此主机应用程序还支持使用 Enter-PSSessionExit-PSSession cmdlet 调用远程计算机。
  • Host06 - 演示如何生成基于控制台的交互式主机应用程序,该应用程序从命令行读取命令,执行命令,然后将结果显示到控制台。 此外,此示例使用 Tokenizer API 指定用户输入的文本的颜色。

提供程序示例

  • AccessDBProviderSample01 - 演示如何声明直接从 CmdletProvider 类派生的提供程序类。 此处仅包含它是为了完整性。

  • AccessDBProviderSample02 - 演示如何覆盖 NewDrive 和 RemoveDrive 方法以支持对 New-PSDriveRemove-PSDrive cmdlet 的调用。 此示例中的提供程序类派生自 DriveCmdletProvider 类。

  • AccessDBProviderSample03 - 演示如何覆盖 GetItem 和 SetItem 方法以支持对 Get-ItemSet-Item cmdlet 的调用。 此示例中的提供程序类派生自 ItemCmdletProvider 类。

  • AccessDBProviderSample04 - 演示如何覆盖容器方法以支持对 Copy-ItemGet-ChildItemNew-ItemRemove-Item cmdlet 的调用。 数据存储包含容器的项时,应实现这些方法。 容器是公共父项下的一组子项。 此示例中的提供程序类派生自 ItemCmdletProvider 类。

  • AccessDBProviderSample05 - 演示如何覆盖容器方法以支持对 Move-ItemJoin-Path cmdlet 的调用。 当用户需要移动容器中的项以及数据存储包含嵌套容器时,应实现这些方法。 此示例中的提供程序类派生自 NavigationCmdletProvider 类。

  • AccessDBProviderSample06 - 演示如何覆盖内容方法以支持对 Clear-ContentGet-ContentSet-Content cmdlet 的调用。 当用户需要管理数据存储中项的内容时,应实现这些方法。 此示例中的提供程序类派生自 NavigationCmdletProvider 类,并实现 IContentCmdletProvider 接口。