将函数另存为对象并调用它们

时间:2018-07-20 06:34:31

标签: .net powershell reflection invoke

我做了一些研究,但没有找到适合我的情况的任何东西。是否有PowerShell的本机方式将函数调用保存-或在最佳情况下-将参数化的函数调用保存为PowerShell中的对象,以便以后调用它们?

我想将其中一些排队,然后连续打电话。我想到的一种方法是将调用编写为字符串,然后通过Invoke-Expression调用它们,但这似乎很容易出错。

不幸的是,我无法为此目的构建类,因为我们主要使用PowerShell v3.0,并且它具有功能。因此,我要求一种内置的/已经存在的方式。

1 个答案:

答案 0 :(得分:0)

我已经尝试过PetSerAl的评论中提供的示例,确实这是解决方案,或者非常接近并且适合我。

对于每个想尝试相同事物的人,这里有一个更精致的代码示例:

function Test
{
    Param(
        [Parameter(Mandatory = $false)]
        [ref]$Inp
    )
    return ($Inp.Value -eq $null)
}

$List = @({ $(Test -Inp ([ref]'ref')) }, $false)
$Result = $(& $List[0])
$Result.GetType()
($Result -eq $List[1])

如果您用双引号括起来,那么在大括号中像PetSerAl一样,结果将被当作一个字符串,而忽略它们将返回结果作为原始DataType。

如果有人很好地解释了它的工作方式和原因(我认为这可能是通过模拟管道执行的ScriptBlock),请将其发布到此线程中,我将其标记为答案并标记为您的答案。 / p>