首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell4.0中的工作流内函数调用

Powershell4.0中的工作流内函数调用
EN

Stack Overflow用户
提问于 2016-07-11 22:18:02
回答 1查看 2K关注 0票数 0

我有一组函数,需要在Powershell脚本中使用工作流来管理远程计算机,无论是在工作流中还是在没有工作流的情况下都需要调用这些函数。我尝试定义一个要传递给InlineScript的模块,但使用内联脚本下面的方法找不到动态模块"SharedFunctions“

代码语言:javascript
复制
#Script Only Functions
function funct1 {}
function funct2 {}

#Script and Workflow Functions
New-Module SharedFunctions {
    function sharedFunct1 {}
    function sharedFunct2 {}
} -Name SharedFunctions | Import-Module

#Workflow
workflow w1 {
    Param( [string[]] $computerList)

    foreach -parallel( $computer in $computerList ){
        #Shared Function out of Inline Script
        sharedFunct1


        InlineScript{
            #Shared Function inside InlineScript
            sharedFunct2
            #Do stuff
        } -PSRequiredModules "SharedFunctions"
    }
}

<# Local Script #>
funct1    
sharedFunct1
w1

我收到错误消息

代码语言:javascript
复制
The specified module 'SharedFunctions' was not loaded because no valid module file was found in any module directory.
    + CategoryInfo          : ResourceUnavailable: (FunctionModule:String) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand
    + PSComputerName        : [localhost]

我读到可以在工作流中导入模块。这对于动态模块来说是不可能的吗?如何从工作流中调用共享函数?sharedFunct1可以是一项任务,例如使用来自远程计算机上操作的每个线程的更新来更新主机上的日志文件。

EN

回答 1

Stack Overflow用户

发布于 2016-07-12 00:26:26

似乎导入模块只能从文件导入,而不能从内存导入。这似乎已经完成了技巧-文件1-

代码语言:javascript
复制
<# MAIN.PS1 #>
function funct1 {}
function funct2 {}

#Workflow
workflow w1 {

    Param( [string[]] $computerList)

    $modDir = "Some Directory"
    Import-Module $$modDir

    foreach -parallel( $computer in $computerList ){
        #Shared Function out of Inline Script
        sharedFunct1


        InlineScript{
            #Import module in each Inline Script
            Import-Module $using:$modDir

            #Shared Function inside InlineScript
            sharedFunct2
            #Do stuff
        }
    }
}

<# Local Script #>
funct1    
sharedFunct1
w1

文件2-

代码语言:javascript
复制
<# MODULE.PSM1 #>    
#Script and Workflow Functions        
function sharedFunct1 {}
function sharedFunct2 {}

然而,我更喜欢只使用一个文件,所以如果有人知道如何将动态模块导入到工作流中,我将很乐意看到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38309264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档