すぐに実行できる PowerShell コードを作成するか、生成されたスクリプトとして実行するコマンドを生成することを考えています。
このシナリオは避けたい:
if($Generating){
write-Output "somecommand.exe"
}
else{
somecommand.exe
}
ScriptBlocks を調べてみました。これは、ScriptBlock の内容を実行せずにコンソールに書き込むことができるため、最初は有望に見えました。そのような:
$sc = { somecommand.exe }
$sc
somecommand.exe
私の具体的な質問は、スクリプトブロックにパラメーターが含まれている場合、スクリプトブロックの内容をコンソールに書き込んでいるときに、スクリプトブロックを呼び出さずにそれらを解決できるかということです。
たとえば、次のスクリプトブロックがあるとします。
$b2 = { Param([string]$P) Write-Host "$P" }
コンソールで「$b2」と入力して Enter キーを押すと、次のように表示されます。
Param([string]$P) Write-Host "$P"
私が見たいのはこれです(パラメータ値が「Foo」の場合):
Param([string]$P) Write-Host "Foo"
これは、「&」または Invoke() を使用して呼び出されたときに実行できることを認識していますが、呼び出さずにパラメーターを解決して、スクリプト生成をもう少しエレガントにする方法はありますか?コード全体のステートメント?