如何在Powershell中调用脚本块作为函数参数



我想有一个函数来运行不同的ScriptBlocks。因此,我需要使用我的脚本块作为函数的参数。它不起作用。

例如。此函数以字符串形式返回脚本块。

function Run_Scriptblock($SB) {
return $SB
}

这些是我尝试的输出:

# 1st try
Run_Scriptblock {systeminfo}
>> systeminfo

# 2nd try
Run_Scriptblock systeminfo
>> systeminfo

# 3rd try
Run_Scriptblock [scriptblock]systeminfo
>> [scriptblock]systeminfo

# 4th try
$Command = [scriptblock]{systeminfo}
Run_Scriptblock $Command
>> [scriptblock]systeminfo

# 5th try
[scriptblock]$Command = {systeminfo}
Run_Scriptblock $Command
>> systeminfo

如果你想让一个函数运行一个脚本块,你需要实际调用调用该脚本块,即

function Run_Scriptblock($SB) {
$SB.Invoke()
}

function Run_Scriptblock($SB) {
& $SB
}

否则,该函数将仅以字符串形式返回脚本块定义。不需要return关键字,因为默认情况下,PowerShell 函数返回所有未捕获的输出。

该函数将像这样调用:

Run_Scriptblock {systeminfo}

作为旁注,我建议您考虑按照PowerShell约定(<Verb>-<Noun>使用批准的谓词(命名函数,例如

function Invoke-Scriptblock($SB) {
...
}

相关内容

  • 没有找到相关文章

最新更新