Powershell脚本不能用于ISE

时间:2017-07-19 20:16:16

标签: powershell powershell-v4.0

我有一个在ISE中正常运行的PowerShell脚本,但是当我直接从.ps1文件运行它时,它会在此时停止:

Write-Host "Attempting to start FFMPEG Process with arguments:$ArgumentList::::" -ForegroundColor Green
Start-Process $SCRIPT:FFMPEGLocation $ArgumentList -Wait

我使用正确的参数列表获取Write-Host打印输出,但没有弹出启动过程或任何内容的窗口。我确保将SCRIPT范围变量用于函数之外的任何内容。它在ISE中运行正常,而不是在我在Console中运行时。也没有错误,$SCRIPT:FFMPEGLocation变量是要执行的exe的直接路径。

非常感谢任何帮助,如果您需要更多帮助,请告诉我。

PSVersion               5.1.14393.1066   
OSVersion               10.0.14393

2 个答案:

答案 0 :(得分:1)

根据评论,检查传递给Start-Process的值,以确保它包含您对$SCRIPT:FFMPEGLocation可能存在的问题的期望。

ISE和控制台之间在范围方面的差异可能令人沮丧。 请参阅this SuperUser post,它进一步解释了行为 。您可能还会发现this post有帮助;  BartekB解释了ISE中的F5实际上dot-sources脚本而不是calling,并提供了运行干净会话的功能。

答案 1 :(得分:0)

另一种方法,它也会等待需要运行的进程:

& $EXE /arg 1 /arg 2 -etc 2>&1 | % { $_ }

这将执行命令并传递args,将任何错误重定向到输出流然后打印输出(出于某种原因,我实际上从命令输出中运气不好)