繁体   English   中英

如何在 Powershell 中将脚本块调用为 function 参数

[英]How to call a Scriptblock as a function parameter in Powershell

我想要一个 function 来运行不同的ScriptBlock 所以,我需要使用我的 Scriptblock 作为 function 的参数。 这没用。

例如。 此 function 将 ScriptBlock 作为字符串返回。

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 来运行一个脚本块,你需要实际调用调用那个脚本块,即

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

或者

function Run_Scriptblock($SB) {
    & $SB
}

否则 function 只会以字符串形式返回脚本块定义。 不需要return关键字,因为 PowerShell 函数默认返回所有未捕获的 output

function 会这样调用:

Run_Scriptblock {systeminfo}

作为旁注,我建议您考虑按照 PowerShell 约定( <Verb>-<Noun>带有批准的动词)命名您的 function,例如

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM