我正在尝试使用.exe
执行PowerShell
文件:
$myExe = Join-Path $scriptDir "\bin\my\myProgram.exe"
$job = Start-Job -ScriptBlock{
& $myExe }
但它没有执行。当在$myExe
中的文件路径中键入时,程序按预期工作,但是当我使用上面的代码时,没有任何反应。有人可以解释我做错了什么;或者,为什么我没有得到预期的结果?
要清楚,预期结果(此时)是获得防火墙警告。再次,当我直接输入PS控制台的路径时,防火墙警告出现,但使用上面的代码,似乎没有任何事情发生。我还尝试使用Get-Process
检查状态,但结果是$job
变量,说它是running
。
更新:
运行:
$myExe = Join-Path $scriptDir "\bin\my\myProgram.exe"
& $prndExe
导致PowerShell挂起
更新2:
当我执行以下操作时,程序可以运行并且过程开始:
Start-Job -ScriptBlock{ & "C:\path\Music\source\p\android\test\Automation\bin\mym\myProgram.exe"}
但使用上面的代码却没有。这让我相信我在使用Start-Job
cmdlet做错了什么?
答案 0 :(得分:1)
所以这个问题的解决方案(未在文档中列出,应该是这个问题)是,如果你在ScriptBlock
中使用变量,你必须使用ArgumentList
并传入这些变量
为了让我的scriptblock工作,我做了:
$job = Start-Job -ScriptBlock{
$myExe = $args[0]
& $myExe
} -ArgumentList @($myExe)