有没有更优雅的方法可以将参数传递给Invoke-Command?

时间:2020-05-27 13:36:04

标签: powershell

我有一个可以在内部网络中执行的功能,但是可以通过DMZ服务器上的WINRM执行。

基本上所有功能都将在Invoke-Command内部。事实是,我大约有10个参数。

是否有更优雅的方法将参数传递给invoke-command而不是将它们列出3次?

function foo {

    Param(
        $a,
        $b,
        $c,
        $d,
        $e,
        $f
    )

    Invoke-Command -ComputerName bar -ScriptBlock { 
        Param(
            $a,
            $b,
            $c,
            $d,
            $e,
            $f
        )
        <#Stuff#> 
    } -ArgumentList $a, $b, $c, $d, $e, $f

}

2 个答案:

答案 0 :(得分:0)

其他选择是$ using:范围,或引用$ args [0],$ args [1]等。

答案 1 :(得分:0)

您可以通过$PSBoundParameters

function foo {
    Param(
        $a,
        $b
    )
    Invoke-Command -ScriptBlock {
        param(
            $z
        )
        Write-Output $z["a"]
        Write-Output $z["b"]
    } -ArgumentList $PSBoundParameters
}

Foo -a "TEST Number 1" -b "TEST Number 2"