私はこの素晴らしい投稿を見つけました:引数を持つ関数でInvoke-Command-ScriptBlockを使用する
${function:Foo}
関数名を渡したいので、関数呼び出し()を動的にしようとしています。
私はこれを試しました:
$name = "Foo"
Invoke-Command -ScriptBlock ${function:$name}
しかし、それは失敗します。さまざまなエスケープシーケンスも試しましたが、関数名を動的にすることができません。
編集:わかりやすくするために、小さなテストスクリプトを追加しています。もちろん、望ましい結果はを呼び出すことExternalFunction
です。
Function ExternalFunction()
{
write-host "I was called externally"
}
Function InternalFunction()
{
Param ([parameter(Mandatory=$true)][string]$FunctionName)
#working: Invoke-Command -ScriptBlock ${function:ExternalFunction}
#not working: Invoke-Command -ScriptBlock ${invoke-expression $FunctionName}
if (Test-Path Function:\$FunctionName) {
#working,but how to use it in ScriptBlock?
}
}
InternalFunction -FunctionName "ExternalFunction"