我希望有一个函数来运行不同的 Scriptblock ,因此,我需要使用脚本块作为函数的参数。它不起作用。
例如。此函数以字符串的形式返回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发布于 2019-10-04 12:05:00
如果您希望某个函数运行scriptblock,则需要实际调用或调用该scriptblock,即
function Run_Scriptblock($SB) {
$SB.Invoke()
}或
function Run_Scriptblock($SB) {
& $SB
}否则,函数将返回字符串形式的scriptblock定义。不需要return关键字,因为默认情况下,PowerShell函数返回所有未捕获的输出。。
该函数的调用方式如下:
Run_Scriptblock {systeminfo}作为附带说明,我建议您考虑按照PowerShell约定命名您的函数(<Verb>-<Noun>使用认可动词 )。
function Invoke-Scriptblock($SB) {
...
}https://stackoverflow.com/questions/58235882
复制相似问题