【发布时间】:2017-07-19 20:16:16
【问题描述】:
我有一个在 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 中运行良好,只是在我在控制台中运行时不行。也没有错误,$SCRIPT:FFMPEGLocation 变量是要执行的 exe 的直接路径。
任何帮助将不胜感激,如果您需要更多帮助,请告诉我。
PSVersion 5.1.14393.1066
OSVersion 10.0.14393
【问题讨论】:
-
为什么你认为你需要
script范围作为可执行文件的路径和文件名?为什么Start-Process?事实上,你为什么需要脚本呢?只需使用所需参数从 PowerShell 提示符运行可执行文件。 -
谢谢比尔!我当前的脚本超过 200 行,中途我意识到我应该改用 C# 编写代码,但是我滚动的太多了。我有某些变量,例如在
try {部分之外的脚本顶部声明的$SCRIPT:FFMPEGLocation。我知道,我是个坏孩子,我试图用脚本语言做太多事情。我现在只是尝试在 ISE 之外完成这项工作,然后我可以稍后在 C# 中制作程序或服务。 -
无论是否在 ISE 中,在 PowerShell 中运行命令都可以正常工作。您的问题中没有包含几乎足够的信息。 (如果我不得不猜测,你有一个范围界定问题。)
-
是的,比尔。你是对的,我没有提供足够的信息。在我遇到的许多其他问题中,这可能是一个范围界定问题,这就是为什么我将 SCRIPT Scope 用于未在同一块中声明和设置的任何内容。输出显示控制台中的所有内容都是正确的,这就是我对范围感到困惑的原因。但我会一路跋涉。
-
我建议从小处着手,编写一个非常短的脚本,其中只包含重现问题所需的绝对最少代码量。这通常被称为SSCCE。