我有这个脚本文件包含:
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.如果scriptblock包含IF语句,则执行失败,错误如"术语' someofArguments'不被识别为cmdlet的名称..."。
但如果没有IF声明,一切正常。那么如何使用IF语句发送该scriptblock?
谢谢。
PS:我发现了这个主题PowerShell function with parameterized script block和类似帖子,他们说将scriptblock作为字符串发送,并且在函数本身将其转换为类型scriptblock。
编辑: 我找到了这个解决方案,但它并不是很好。有人知道更容易解决问题,而不是像这样提出反击吗?
$scriptblock = @"
`$a=`"$a`"
if(`$a){echo `$a}
else {echo nene}
"@