共用方式為


Windows PowerShell:Windows PowerShell 工作流程環境

Don Jones 今年每一個月將連載 12 篇的 Windows PowerShell 工作流程教學課程。 我們鼓勵您通過一系列的順序,讀開頭 2013 年 1 月列

Don Jones

上月述 Windows PowerShell 工作流是 Windows 管理框架第 3 版中的新功能。 它是預裝 Windows 伺服器 2012年和 Windows 8。 它也是可用於 Windows 7、Windows Server 2008和Windows Server 2008R2。 您將需要這些作業系統運行工作流之一。 您還可以讓工作流目標 — — 也就是說,執行打擊任務 — — 任何版本的 Windows 中,根據你想要完成的任務。

有兩個主要前提條件使用 Windows PowerShell 工作流,除了 Windows PowerShell 版本 3 的標準的系統要求。 首先,您需要使用捆綁的 PSWorkflow 模組,使殼內部的工作流功能。 第二,您需要有您計畫目標與 Windows PowerShell 工作流的電腦上啟用 Windows PowerShell 遠端處理。

遠端處理不一定非要將您在執行工作流,但您計畫庫存、 配置或以其他方式管理任何機器將需要有啟用遠端電腦上運行。 Windows PowerShell 工作流作為其主要通訊協定使用遠端處理。 有可能某些工作流可以寫,不需要遠端處理,但這些是少之又少。

遠端處理是 Windows PowerShell 大大誤解的元件。 以上幾個組織 IT 安全人員採取做不部署的方法。 這一種誤導和不幸。 那些相同的安全意識有沒有問題,讓一大批其他管理通訊協定 (如遠端桌面協定 (RDP)、 遠端程序呼叫 (Rpc) 和 HTTP。

遠端處理是在 Windows 環境中管理通信的未來路向。 微軟將很快開始將這些較舊的協定整合到遠端處理。 遠端處理使用 HTTP 和 HTTPS,是高度可配置的、 易於管理,並可以集中鎖定它與群組原則物件 (GPO)。 它也是一般更安全、 更可審核和更加可控,比那些較舊的協定。 為遠端處理和其體系結構的安全問題更全面的討論,考慮下載免費的電子書,"PowerShell 遠端處理的秘密."

內部工作流程

你得在接近 Windows PowerShell 工作流時的最大挑戰是要記住它看起來像一個 Windows PowerShell 腳本 (具體而言,函數),但它不是。 "Windows PowerShell 語言"你寫被翻譯成一種外部的語言 (XAML)。 然後它由非 Windows PowerShell 技術執行。

其結果是,有幾個不同的規則。 有些人是純粹的語法。 一般來說,您需要使用您所運行的 Cmdlet 的充分 Cmdlet 名稱。 另外,不允許位置參數和截斷的參數名稱。 您必須使用完整參數名稱。

什麼會更令人困惑是工作流中的整體環境。 工作流的整點是您可以中斷和故意恢復工作流或這樣做對事錯在您環境中 (如功率損失) 的反應。

這意味著在工作流中的每個命令必須基本上重疊。 它必須有沒有認識其他命令所做的事和沒有本機命令之間保持資料的手段。 它還意味著您不能設置一個變數來保存一個命令的輸出,然後將該變數傳遞給另一個命令的輸入。 它不會工作。 此外,您無法載入模組包含其他命令。 沒有持續的環境,在其中載入模組。

現在可以走到工作流中的特殊 InlineScript {} 塊將成為你最好的朋友。 每個 InlineScript 基本上是作為一個單元運行的。 副本的 Windows PowerShell,堵塞在整個 InlineScript,向上自旋的 Windows 工作流基金會 (WWF) 和它運行。 InlineScript 的內容類別似于傳統的 Windows PowerShell 腳本。

也是隱式的 InlineScript。 世界自然基金會實際上不能運行 Windows PowerShell 命令 InlineScript 之外。 當您在您的工作流中使用 Windows PowerShell Cmdlet 時,Windows PowerShell 檢查如果本機的世界自然基金會等效可用,並且告訴世界自然基金會,改為運行的。

Windows PowerShell 團隊寫了許多本機 Windows PowerShell 命令,世界自然基金會等效項,但當您嘗試使用 Cmdlet,沒有世界自然基金會的本機版本,Windows PowerShell 隱式地環繞在 InlineScript 塊中您的命令。 這將導致世界自然基金會啟動 Windows PowerShell,運行您的命令,然後關閉該實例的 Windows PowerShell。

這種缺乏持久性命令之間是什麼可説明使您的腳本可恢復 Windows PowerShell 工作流。 為什麼 Windows PowerShell 工作流可以並行化腳本中的命令,這是很大一部分。 它變成他們多執行緒的自動化機器。 然而,缺乏恒心是如何正常 Windows PowerShell 腳本的重大偏離,及職能工作。 它需要很多的額外的規劃,使正常工作的腳本。

不會很不尋常,請參閱工作流由一群 InlineScript 塊組成。 也不會看到的只不過是一個單一的、 長的 InlineScript 塊的工作流不尋常。

這種工作流將有有限的 (或不存在的) 的並行化或恢復功能。 InlineScript 是工作的一個單個單元。 你可能只是選擇此類腳本作為運行正常功能,使用遠端處理,而不是工作流。 你會得到很少的 Windows PowerShell 工作流實際好處反正。

保持這些方便

Windows PowerShell 工作流明顯缺乏的一件事是堅持兩個命令之間的工作流的資料的一種手段。 這將使它在更廣範圍的情況下非常有用。 如果中斷工作流並將其恢復,命令可以輕鬆地重新創建狀態資訊,如 IP 位址、 電腦名稱稱、 使用者名稱或任何其他,並繼續運行。

正是鑒於此本機缺點,您可能要創建您自己的東西。 設置SQL Server實例 (甚至免費快遞實例),以及創建您的工作流可以在其中保存資料的資料庫表。 工作流將需要一些方法來唯一地標識本身,例如工作流的名稱以及針對每個工作流實例的電腦名稱稱。

然後,您的工作流可能的離散 InlineScript 塊的數量由組成。 每個將從資料庫中讀取的目前狀態、 執行某些任務,和,如果有必要,使用新資訊更新資料庫。 它是 Windows PowerShell 工作流功能不能説明自動化這一種恥辱。 也許"$ 工作流: 變數"體系結構,使用 XML 檔或引擎蓋下SQL Server可以説明,但這也是為將來的版本。

好消息是它是很容易的使用SQL Server的"擲自己"持久性。 SQL Server向 XML 檔最好,因為它是可擴充性更強,您可以訪問它更方便地從多個網路位置,和它支援多個實例更好的併發訪問一次。

Microsoft.NET 框架 System.Data.Sql.SqlClient 類是簡單易用。 有的例子我"月午餐學習 PowerShell 工具"電子書。 事實上,我論文的作者之一,並創建整個模組,您可以重新使用和免費下載作為這本書的示例腳本的一部分。

與這些預賽的方式,我們準備開始審查基本工作流程是什麼樣子。 這將是專欄的下個月的主題。

Don Jones

Don Jones Windows PowerShell MVP 獎得主、 TechNet 雜誌 》 的特約編輯。 他合著了有關 Windows PowerShell 版本 3,包括在 Windows PowerShell 和 Windows PowerShell 遠端處理中創建 HTML 報表上的幾個免費標題的四本書。 找到它們都在 PowerShellBooks.com,或問你問題在討論論壇上的Jones PowerShell.org

相關的內容