適用於:Windows PowerShell 2.0、Windows PowerShell 3.0
下列主題描述如何在不同版本的 Windows 上安裝 PowerShell SDK。
安裝 Windows PowerShell 3.0 SDK for Windows 8 和 Windows Server 2012
Windows PowerShell 3.0 會自動隨 Windows 8 和 Windows Server 2012 一起安裝。 此外,您也可以下載並安裝 Windows PowerShell 3.0 的參考元件,作為 Windows 8 SDK 的一部分。 這些元件可讓您撰寫適用於 Windows PowerShell 3.0 的 Cmdlet、提供者和主機程式。 當您安裝 Windows SDK for Windows 8 時,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 - 示範如何建立用來建立遠端連線的遠端 Runspace。
- RemoteRunspacePool01 - 示範如何建構遠端 Runspace 集區,以及如何使用此集區同時執行多個命令。
- Serialization01 - 示範如何查看現有的 .NET 類別,並確定此類別所選公用屬性的資訊會跨串行化/還原串行化保留。
- Serialization02 - 示範如何查看現有的 .NET 類別,並確定當類別的公用屬性中沒有資訊時,此類別實例的資訊會保留在串行化/還原串行化之間。
- 串行化03 - 示範如何查看現有的 .NET 類別,並確定這個類別和衍生類別的實例已還原串行化(解除凍結)到即時 .NET 物件。
事件範例
- Event01 - 示範如何從 ObjectEventRegistrationBase 衍生來建立事件註冊的 Cmdlet。
- Event02 - 示範如何顯示如何接收遠端電腦上產生的 Windows PowerShell 事件通知。 它會使用透過 Runspace 類別公開的 PSEventReceived 事件。
裝載應用程式範例
- Runspace01 - 示範如何使用 PowerShell 類別同步執行
Get-ProcessCmdlet。Get-ProcessCmdlet 會針對本機電腦上執行的每個進程傳回 Process 物件。 - Runspace02 - 示範如何使用 PowerShell 類別以同步方式執行
Get-Process和Sort-ObjectCmdlet。Get-ProcessCmdlet 會針對本機計算機上執行的每個進程傳回 Process 物件,而Sort-Object會根據其 Id 屬性來排序物件。 這些命令的結果是使用 DataGridView 控件來顯示。 - Runspace03 - 示範如何使用 PowerShell 類別同步執行腳本,以及如何處理非終止錯誤。 腳本會接收進程名稱清單,然後擷取這些進程。 腳本的結果,包括執行腳本時所產生的任何非終止錯誤,都會顯示在主控台視窗中。
- Runspace04 - 示範如何使用 PowerShell 類別來執行命令,以及如何攔截執行命令時所擲回的終止錯誤。 執行兩個命令,最後一個命令會傳遞無效的參數自變數。 因此,不會傳回任何物件,並擲回終止錯誤。
- Runspace05 - 顯示如何將嵌入式管理單元新增至 InitialSessionState 物件,以便在開啟 Runspace 時,可以使用嵌入式管理單元的 Cmdlet。 嵌入式管理單元提供以同步方式使用PowerShell物件執行 Get-Proc Cmdlet(由 GetProcessSample01 範例定義)。
- Runspace06 - 顯示如何將模組新增至 InitialSessionState 物件,以便在開啟 Runspace 時載入模組。 模組提供以同步方式使用PowerShell物件執行 Get-Proc Cmdlet(由 GetProcessSample02 範例定義)。
- Runspace07 - 示範如何建立 Runspace,然後使用該 Runspace 以同步方式使用 PowerShell 物件執行兩個 Cmdlet。
- Runspace08 - 示範如何將命令和自變數新增至 PowerShell 物件的管線,以及如何同步執行命令。
- Runspace09 - 示範如何將腳本新增至 PowerShell 物件的管線,以及如何以異步方式執行腳本。 事件可用來處理腳本的輸出。
- Runspace10 - 示範如何建立預設的初始會話狀態、如何將 Cmdlet 新增至 InitialSessionState、如何建立使用初始會話狀態的 Runspace,以及如何使用 PowerShell 物件執行命令。
- Runspace11 - 示範如何使用 ProxyCommand 類別來建立 Proxy 命令,以呼叫現有的 Cmdlet,但會限制可用的參數集。 接著,Proxy 命令會新增至初始工作階段狀態,以用來建立限制的 Runspace。 這表示使用者只能透過 Proxy 命令存取 Cmdlet 的功能。
- PowerShell01 - 示範如何使用 InitialSessionState 物件建立限制的 Runspace。
- PowerShell02 - 示範如何使用 Runspace 集區同時執行多個命令。
主機範例
- Host01 - 示範如何實作使用自定義主機的主應用程式。 在此範例中,會建立使用自定義主機的 Runspace,然後使用 PowerShell API 來執行呼叫
exit的腳本。 主機應用程式接著會查看文本的輸出,並列印出結果。 - Host02 - 示範如何撰寫使用 Windows PowerShell 運行時間以及自定義主機實作的主應用程式。 主應用程式會將主機文化特性設定為德文、執行
Get-ProcessCmdlet,並使用 pwrsh.exe來顯示結果,然後以德文列印目前的數據和時間。 - Host03 - 示範如何建置互動式控制台型主機應用程式,以從命令行讀取命令、執行命令,然後將結果顯示至控制台。
- Host04 - 示範如何建置互動式控制台型主機應用程式,以從命令行讀取命令、執行命令,然後將結果顯示至控制台。 此主應用程式也支持顯示提示,讓使用者指定多個選擇。
- Host05 - 示範如何建置互動式主機應用程式,以從命令行讀取命令、執行命令,然後將結果顯示至主控台。 此主應用程式也支援使用
Enter-PSSession和Exit-PSSessionCmdlet 呼叫遠端電腦。 - Host06 - 示範如何建置互動式主機應用程式,以從命令行讀取命令、執行命令,然後將結果顯示至主控台。 此外,此範例會使用Tokenizer API來指定使用者輸入的文字色彩。
提供者範例
AccessDBProviderSample01 - 示範如何宣告直接從 CmdletProvider 類別衍生的提供者類別。 這裡只包含完整性。
AccessDBProviderSample02 - 示範如何覆寫 NewDrive 和 RemoveDrive 方法,以支援對
New-PSDrive和Remove-PSDriveCmdlet 的呼叫。 此範例中的提供者類別衍生自 DriveCmdletProvider 類別。AccessDBProviderSample03 - 示範如何覆寫 GetItem 和 SetItem 方法,以支援對
Get-Item和Set-ItemCmdlet 的呼叫。 此範例中的提供者類別衍生自 ItemCmdletProvider 類別。AccessDBProviderSample04 - 示範如何覆寫容器方法,以支援呼叫
Copy-Item、Get-ChildItem、New-Item和Remove-ItemCmdlet。 當數據存放區包含容器的專案時,應該實作這些方法。 容器是通用父專案下子專案的群組。 此範例中的提供者類別衍生自 ItemCmdletProvider 類別。AccessDBProviderSample05 - 示範如何覆寫容器方法,以支援對
Move-Item和Join-PathCmdlet 的呼叫。 當使用者需要移動容器內的專案,以及數據存放區包含巢狀容器時,應該實作這些方法。 此範例中的提供者類別衍生自 NavigationCmdletProvider 類別。AccessDBProviderSample06 - 示範如何覆寫內容方法,以支援呼叫
Clear-Content、Get-Content和Set-ContentCmdlet。 當使用者需要管理數據存放區中項目的內容時,應該實作這些方法。 此範例中的提供者類別衍生自 NavigationCmdletProvider 類別,並實作 IContentCmdletProvider 介面。