Блок сценария с оператором IF в качестве параметра функции

У меня этот файл скрипта содержит:

   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

У меня есть две проблемы: 1. Если блок сценария содержит оператор IF, выполнение завершилось ошибкой типа «Термин 'someofArguments' не распознан как имя командлета...».

Но без оператора IF все работает нормально. Итак, как отправить этот блок сценария с оператором IF?

  1. Как избежать использования обратной кавычки в $command с переменными $true, $false и главным образом $null? Потому что без обратной кавычки они переводятся в true, false и ничего.

Спасибо.

PS: я нашел эти темы функция PowerShell с параметризованным блоком скрипта и подобные сообщения, которые говорят отправить блок сценария в виде строки и в самой функции преобразовать его в тип блока сценария.

РЕДАКТИРОВАТЬ: я разобрался с этим решением, но это не очень приятно. Кто-нибудь знает более простое решение, чем поставить обратную галочку?

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

person ztrhgf    schedule 01.07.2014    source источник
comment
Пожалуйста, оптимизируйте форматирование вашего сообщения (форматируйте весь код как код).   -  person Werner Henze    schedule 01.07.2014
comment
Вам не нужно экранировать двойные кавычки в строке здесь.   -  person boeprox    schedule 01.07.2014