Powershell 脚本无法在 ISE 中运行

Powershell Script not working out of ISE

我有一个 powershell 脚本 运行 在 ISE 中很好,但是当我 运行 它直接来自 .ps1 文件时它在此时停止:

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

我得到 Write-Host 打印输出,带有正确的参数列表,但没有 window 弹出启动过程或任何内容。我确保对函数之外的任何内容使用 SCRIPT 范围变量。它 运行 在 ISE 中很好,只是当我在控制台中 运行 它时就不行了。也没有错误,$SCRIPT:FFMPEGLocation 变量是要执行的 exe 的直接路径。

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

PSVersion               5.1.14393.1066   
OSVersion               10.0.14393

另一种方法也将等待需要 运行:

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

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

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

ISE 和控制台在范围方面的差异可能令人沮丧。 请参阅 this SuperUser post 进一步解释该行为 .您可能还会发现 this post 有帮助; BartekB explains that F5 in the ISE actually dot-sources the script instead of calling 它,并提供了 运行 干净会话的功能。