我正在編寫一個PowerShell腳本,它將使用Invoke-Command及其-ScriptBlock
參數在遠程主機上執行命令。例如,在帶參數的函數上使用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)}
但是,這並不工作:
調用命令:在參數「腳本塊」無法驗證的說法。 參數爲空。提供一個非空參數並再次嘗試命令 。
如何使用帶有參數的本地函數-ScriptBlock
的Invoke-Command?我意識到我可以將整個函數和參數包裝在一個大代碼塊中,但這不是一個乾淨的方法。
,完美的作品!我搞亂了param()+ -Arguments的組合,沒有運氣。 –
花了我幾個小時才找到這個解決方案;-) 比導出/導入會話好得多 謝謝! – icnivad
我相信正確的格式應該是'-ScriptBlock {$ function:Foo}'(note'$'position) – Mourndark