Я пишу сценарий PowerShell, который будет выполнять команды на удаленном хосте, используя 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
, которая является локальной функцией с аргументами?
Я понимаю, чтоЯ могу обернуть всю функцию и параметры в большой блок кода, но, на мой взгляд, это не совсем чистый способ сделать это.