How to get PowerShell to keep a command window open? How to get PowerShell to keep a command window open? powershell powershell

How to get PowerShell to keep a command window open?


Try doing:

start-process your.exe -NoNewWindow

Add a -Wait too if needed.


The OP seemed satisfied with the answer, but it doesn't keep the new window open after executing the program, which is what he seemed to be asking (and the answer I was looking for). So, after some more research, I came up with:

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


I was solving a similar problem few weeks ago. If you don't want to use & (& '.\program.exe') then you can use start process and read the output by start process (where you read the output explicitly).

Just put this as separate PS1 file - for example (or to macro):

param (    $name,    $params)$process = New-Object System.Diagnostics.Process$proInfo = New-Object System.Diagnostics.ProcessStartInfo$proInfo.CreateNoWindow = $true$proInfo.RedirectStandardOutput = $true$proInfo.RedirectStandardError = $true$proInfo.UseShellExecute = $false$proInfo.FileName = $name$proInfo.Arguments = $params$process.StartInfo = $proInfo#Register an Action for Error Output Data Received EventRegister-ObjectEvent -InputObject $process -EventName ErrorDataReceived -action {    foreach ($s in $EventArgs.data) { Write-Host $s -ForegroundColor Red }} | Out-Null#Register an Action for Standard Output Data Received EventRegister-ObjectEvent -InputObject $process -EventName OutputDataReceived -action {    foreach ($s in $EventArgs.data) { Write-Host $s -ForegroundColor Blue }} | Out-Null$process.Start() | Out-Null$process.BeginOutputReadLine()$process.BeginErrorReadLine()$process.WaitForExit()

And then call it like:

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

You can also easily redirect output or implement some kind of timeout in case your application can freeze...