0

このスクリプト ファイルには以下が含まれています。

   function run_command 
{
    param    
    (
        [string] $scriptblock
    )

    $sb = [Scriptblock]::Create($scriptblock)
    Start-Job -ScriptBlock $sb | Wait-Job | Receive-Job
}

$a = "aaa"

$scriptblock = @"
if($a){echo $a}
else {echo nene}
"@

run_command -scriptblock $scriptblock

私には 2 つの問題があります。

しかし、IFステートメントがなければ、すべて正常に機能しています。では、そのスクリプトブロックを IF ステートメントで送信する方法は?

  1. 変数 $true、$false、および主に $null を使用して $command でバックティックを使用しないようにするにはどうすればよいですか? バッククォートがないと、 true、false、および Nothing に変換されるためです。

ありがとうございました。

PS: このトピックは、パラメーター化されたスクリプト ブロックを使用した PowerShell 関数と同様の投稿を見つけました。これは、scriptblock を文字列として送信し、関数自体でそれを scriptblock 型に変換することを示しています。

編集:私はこの解決策を見つけましたが、あまり良くありません。このようにバックティックを置くよりも簡単な解決策を誰かが知っていますか?

$scriptblock = @"
`$a=`"$a`"
if(`$a){echo `$a}
else {echo nene}
"@
4

0 に答える 0