适用于: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-Process
和Sort-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-PSSession
和Exit-PSSession
cmdlet 调用远程计算机。 - Host06 - 演示如何生成基于控制台的交互式主机应用程序,该应用程序从命令行读取命令,执行命令,然后将结果显示到控制台。 此外,此示例使用 Tokenizer API 指定用户输入的文本的颜色。
提供程序示例
AccessDBProviderSample01 - 演示如何声明直接从 CmdletProvider 类派生的提供程序类。 此处仅包含它是为了完整性。
AccessDBProviderSample02 - 演示如何覆盖 NewDrive 和 RemoveDrive 方法以支持对
New-PSDrive
和Remove-PSDrive
cmdlet 的调用。 此示例中的提供程序类派生自 DriveCmdletProvider 类。AccessDBProviderSample03 - 演示如何覆盖 GetItem 和 SetItem 方法以支持对
Get-Item
和Set-Item
cmdlet 的调用。 此示例中的提供程序类派生自 ItemCmdletProvider 类。AccessDBProviderSample04 - 演示如何覆盖容器方法以支持对
Copy-Item
、Get-ChildItem
、New-Item
和Remove-Item
cmdlet 的调用。 数据存储包含容器的项时,应实现这些方法。 容器是公共父项下的一组子项。 此示例中的提供程序类派生自 ItemCmdletProvider 类。AccessDBProviderSample05 - 演示如何覆盖容器方法以支持对
Move-Item
和Join-Path
cmdlet 的调用。 当用户需要移动容器中的项以及数据存储包含嵌套容器时,应实现这些方法。 此示例中的提供程序类派生自 NavigationCmdletProvider 类。AccessDBProviderSample06 - 演示如何覆盖内容方法以支持对
Clear-Content
、Get-Content
和Set-Content
cmdlet 的调用。 当用户需要管理数据存储中项的内容时,应实现这些方法。 此示例中的提供程序类派生自 NavigationCmdletProvider 类,并实现 IContentCmdletProvider 接口。