2014-09-04 50 views
3

我正在嘗試將PowerShell工作流引入一些現有腳本中以利用並行運行功能。如何讓PowerShell WorkFlow訪問先前導入的模塊

目前工作流程中的我有使用方法:

Inline 
{ 
    Import-Module My.Modules 
    Execute-MyModulesCustomFunctionFromImportedModules -SomeVariable $Using:SomeVariableValue 
} 

否則我得到的錯誤,說明它無法找到自定義功能。必須有更好的方法來做到這一點?

回答

3

http://www.powershellmagazine.com/2012/11/14/powershell-workflows/文章證實其導入模塊,然後用他們的是它是如何工作的 - MS解決此得到通過創建所有常見的PowerShell命令WF活動:

一般工作流程設計策略

重要的是要明白,工作流程 的全部內容被翻譯成WF自己的語言,該語言只理解 活動。除少數命令外,Microsoft提供的 提供的WF活動與大多數核心PowerShell cmdlet相對應。這意味着PowerShell的大部分內置命令(在導入任何模塊之前可用的 )都可以正常工作。

雖然這不是附加模塊的情況。此外,由於每個 工作流活動都在自包含的空間中執行,因此您甚至不能在工作流中自行使用Import-Module。你基本上會導入一個 模塊,但是當你試圖運行模塊的命令時,它會消失。

解決的辦法是將工作流程視爲高級任務 協調機制。由於這些 塊的內容在單個PowerShell會話中作爲一個單元執行,因此您可能在工作流程中有多個 InlineScript塊。 在InlineScript {}中,您可以導入模塊,然後運行其命令 。您包含的每個InlineScript {}塊獨立運行 ,因此將每個塊視爲獨立腳本文件 排序:每個應該執行任何必需的設置任務,以便 成功運行。