来自另一个上下文的ScriptBlock中定义的引用函数

时间:2018-01-12 23:14:18

标签: powershell powershell-v4.0

我正在尝试调用在scriptblock之外的scriptblock内声明的函数,但PS无法解析它。这是我的代码

  $ScriptBlock={

        function Get-Baz(){

            Write-Host "Baz executed"
        }
        function Get-Foo(){
            Write-Host "Foo executed"
        }
    }

    Get-Baz <--The term 'Get-Baz' is not recognized as the name of a cmdlet, function, script 

1 个答案:

答案 0 :(得分:3)

定义一个脚本块并不执行其中的任何内容。

通常你用the call operator &执行一个脚本块,但是在不同的范围内执行它并且不会工作。

相反,您需要在当前范围内执行scriptblock。为此,请使用dot sourcing operator .

$ScriptBlock={

    function Get-Baz(){

        Write-Host "Baz executed"
    }
    function Get-Foo(){
        Write-Host "Foo executed"
    }
}

. $ScriptBlock

Get-Baz