Я пишу PowerShell script, который будет выполнять команды на удаленном хосте, используя Invoke-Command и его параметр -ScriptBlock
. Например,
function Foo {
...
return "foo"
}
$rv = Invoke-Command --Credential $c --ComputerName $fqdn -ScriptBlock ${function:Foo}
Это прекрасно работает. То, что я хотел бы сделать сейчас, это одно и то же, но вызвать функцию с локальными аргументами. Например,
function Bar {
param( [String] $a, [Int] $b )
...
return "foo"
}
[String] $x = "abc"
[Int] $y = 123
$rv = Invoke-Command --Credential $c --ComputerName $fqdn -ScriptBlock ${function:Foo($x,$y)}
Но это не работает:
Invoke-Command: не удается проверить аргумент в параметре ScriptBlock. Аргумент равен нулю. Поставьте ненулевой аргумент и попробуйте выполнить команду еще раз.
Как я могу использовать Invoke-Command с -ScriptBlock
, которая является локальной функцией с аргументами?
Я понимаю, что я могу обернуть всю функцию и параметры в большом блоке кода, но, по-моему, это не чистый способ сделать это.