我正在尝试调用在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
答案 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