У меня этот файл скрипта содержит:
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?
- Как избежать использования обратной кавычки в $command с переменными $true, $false и главным образом $null? Потому что без обратной кавычки они переводятся в true, false и ничего.
Спасибо.
PS: я нашел эти темы функция PowerShell с параметризованным блоком скрипта и подобные сообщения, которые говорят отправить блок сценария в виде строки и в самой функции преобразовать его в тип блока сценария.
РЕДАКТИРОВАТЬ: я разобрался с этим решением, но это не очень приятно. Кто-нибудь знает более простое решение, чем поставить обратную галочку?
$scriptblock = @"
`$a=`"$a`"
if(`$a){echo `$a}
else {echo nene}
"@