Windows 如何让PowerShell保持命令窗口打开?

Windows 如何让PowerShell保持命令窗口打开?,windows,shell,powershell,Windows,Shell,Powershell,当我在PowerShell上运行程序时,它会打开一个新窗口,在我看到输出之前,该窗口会关闭。如何使PowerShell保持此窗口打开?如果程序是使用cmd/c foo.cmd命令启动的批处理文件(.cmd或.bat扩展名),只需将其更改为cmd/k foo.cmd即可执行程序,但提示符保持打开 如果程序不是批处理文件,请将其包装在批处理文件中,并在其末尾添加pause命令。要将程序包装在批处理文件中,只需将命令放在文本文件中,并为其提供.cmd扩展名。然后执行该命令而不是exe。尝试执行以下操作

当我在PowerShell上运行程序时,它会打开一个新窗口,在我看到输出之前,该窗口会关闭。如何使PowerShell保持此窗口打开?

如果程序是使用
cmd/c foo.cmd
命令启动的批处理文件(.cmd或.bat扩展名),只需将其更改为
cmd/k foo.cmd
即可执行程序,但提示符保持打开

如果程序不是批处理文件,请将其包装在批处理文件中,并在其末尾添加
pause
命令。要将程序包装在批处理文件中,只需将命令放在文本文件中,并为其提供.cmd扩展名。然后执行该命令而不是exe。

尝试执行以下操作:

start-process your.exe -NoNewWindow

如果需要,也添加一个
-等待

几周前我正在解决一个类似的问题。如果不想使用&(
&.\program.exe'
),则可以使用启动进程并逐个启动进程读取输出(在启动进程中显式读取输出)

只需将其作为单独的PS1文件—例如(或宏):

然后像这样称呼它:

.\startprocess.ps1 "c:\program.exe" "params"

您还可以轻松重定向输出或实现某种超时,以防您的应用程序冻结…

OP似乎对答案感到满意,但在执行程序后,它不会保持新窗口打开,这就是他似乎在问的问题(也是我一直在寻找的答案)。因此,在进一步研究之后,我提出:

Start-Process cmd "/c `"your.exe & pause `""

使用Startprocess和$arguments脚本块,您可以放置一个读取主机

$arguments = {
    "Get-process"
    "Hello"
    Read-Host "Wait for a key to be pressed"
  }
Start-Process powershell -Verb runAs -ArgumentList $arguments

这个程序是exe还是批处理文件?你能给出你正在运行的确切命令吗?也许可以更改可执行文件的名称?它是一个exe。我将程序所在的文件夹添加到我的路径中,当我输入它运行的程序的名称时,它打开的窗口关闭得太快,我无法阅读它所说的内容。该程序是一个测试python程序的程序。至于您在下面的评论,我不知道如何将程序包装到批处理文件中:/I我更新了我的答案,以澄清如何做到这一点。将程序输出重定向到文本文件也是有意义的。相关(重复):当我这样做时,它会告诉我“启动进程:由于错误而无法执行此命令:系统找不到指定的文件”。这很奇怪,因为我将exe的位置添加到了我的路径中。@Erman-确保它确实是。如果需要,请重新启动Powershell。或者使用完整路径查看发生了什么。@Erman我想您想将powershell.exe my.bat-nonewindow放入启动进程时,我遇到了与Erman注释1相同的错误,但当我完全限定可执行文件时,它为我解决了错误,因此
启动进程'full path to\your.exe'-nonewindow
,命令按预期运行。完美。正是我想要的。非常感谢。PowerShell纯粹主义者的另一种选择是使用PowerShell代替cmd:Start Process PowerShell“your.exe;读取主机‘按Enter键继续’”。我使用这个:
Start Process“PowerShell”-wait-ArgumentList“tree'D:”;pause“
$arguments = {
    "Get-process"
    "Hello"
    Read-Host "Wait for a key to be pressed"
  }
Start-Process powershell -Verb runAs -ArgumentList $arguments