[英]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.