【问题标题】:How to run PowerShell Start-Process without closing the output window?如何在不关闭输出窗口的情况下运行 PowerShell Start-Process?
【发布时间】:2017-08-18 08:31:19
【问题描述】:

我正在尝试在 CMD 中运行以下 PowerShell 命令:

powershell -Command "Start-Process MSBuild.exe MyProject.sln -Verb RunAs"

我在 PowerShell 中运行它,以便获得 UAC(用于提升权限)。我不确定 CMD 中是否有等价物。

现在,我从一个批处理文件中运行 PowerShell 脚本,以便我可以双击并执行。 (或将其放在$Path 位置并从任何地方调用)

但问题是,一旦它运行完毕,它就会立即关闭,并且我看不到构建错误消息(如果有的话)。

MSBuild.exe 在新窗口中执行完毕后如何waitpause

【问题讨论】:

  • 从 powershell_ise 运行它,您不需要将其作为进程调用。您可以使用 & 直接调用。 :)
  • Start-Process 有一个开关-NoNewWindow 应该在当前窗口中运行命令,你可以试试吗?
  • PS:您可以解析输出以在脚本中采取任何进一步的措施:$Buildresult= & $msbuild $solutionFile $NoErrorFound=$buildresult -match "0 Error\(s\)"
  • Start-Process 也有-Wait 参数?
  • Pause 是一个内置的 PS 功能。它保持 PS 窗口,直到您按 Enter 键。我不确定您是否可以保存 .exe 输出,因为这取决于您。如果您的.exe 有控制台输出,您可以使用Start-Process 将其重定向到变量

标签: powershell batch-file cmd msbuild


【解决方案1】:

noexit 命令使您的 PowerShell 窗口保持打开状态。

powershell -noexit -Command "Start-Process MSBuild.exe MyProject.sln -Verb RunAs"

【讨论】:

    【解决方案2】:

    在您的批处理文件中,将pause 添加到末尾

    powershell -Command "Start-Process MSBuild.exe MyProject.sln -Verb RunAs"
    pause
    

    您看到的问题是命令窗口在执行批处理文件中的所有内容后关闭,而不是 powershell 在执行后关闭 shell。

    【讨论】:

      猜你喜欢
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      • 2022-06-13
      • 1970-01-01
      相关资源
      最近更新 更多