了解PowerShell工作流中的功能范围

jam*_*iet 12 powershell powershell-workflow

将以下内容复制并粘贴到新的Powershell ISE脚本中,然后点击F5:

workflow workflow1{
    "in workflow1"
    func1
}
function func1 {
    "in func1"
    func2
}
function func2 {
    "in func2"
}
workflow1
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

术语"func2"不被识别为cmdlet,函数,脚本文件或可操作程序的名称

我不明白这一点.为什么func1会在范围内而不是func2?任何帮助非常感谢.TIA.

Mic*_*lli 10

将工作流视为短视的编程元素.

工作流程无法看到范围内可立即使用的内容.因此,嵌套函数不能与单个工作流一起使用,因为它无法看到它们.

修复方法是嵌套工作流和嵌套函数.比如这样:

workflow workflow1
{
    function func1 
    {
        "in func1"
        workflow workflow2
        {
            function func2 
            {
                "in func2"
            }
            func2
        }
        "in workflow2"
        workflow2
    }
    "in workflow1"
    func1
}
workflow1
Run Code Online (Sandbox Code Playgroud)

然后它看到嵌套函数:

in workflow1
in func1
in workflow2
in func2
Run Code Online (Sandbox Code Playgroud)

更多关于它的信息

  • 谢谢Micky.虽然有点讨厌,我有我想在不同的工作流程中使用的功能,但现在我不能.有点失败IMO职能的目的. (3认同)