从InlineScript调用函数

Bac*_*ave 5 powershell powershell-workflow

如何从嵌套的InlineScript中调用工作流中的函数?以下内容引发异常,因为该函数超出InlineScript的范围:

Workflow test
{
    function func1
    {
        Write-Verbose "test verbose" -verbose
    }

    InlineScript
    {
        func1
    }
}
test
Run Code Online (Sandbox Code Playgroud)

Jan*_*lka 4

内联脚本活动在标准的非工作流 Windows PowerShell 会话中运行命令,然后将输出返回到工作流。”

在这里阅读更多内容。

每个内联脚本都在新的 PowerShell 会话中执行,因此它对父工作流中定义的任何函数不可见。您可以使用以下语句将变量传递给工作流$Using:

workflow Test
{
    $a = 1

    # Change the value in workflow scope usin $Using: , return the new value.
    $a = InlineScript {$a = $Using:a+1; $a}
    "New value of a = $a"
}   

Test

PS> New value of a = 2
Run Code Online (Sandbox Code Playgroud)

但不是一个函数或模块。