Powershell 不断打开新窗口来运行命令

Powershell 不断打开新窗口来运行命令

首先,我更喜欢使用 Bash,而不是 CMD\Powershell。

如何停止 Powershell 在新窗口中打开 \ 运行命令,该窗口在完成后立即关闭,这意味着我无法看到输出?

我目前正在学习一些有关 Kubernetes 的教程,有人在 powershell 中运行 kubectl 和 minikube,我无法复制 \ 排除任何故障,因为它会在新窗口中打开相同的命令,然后在完成或出错时关闭它们。在运行 powershell 之前,我遇到过这类问题,最后我使用 Linux VM 来代替 bash。

编辑-按请求运行 Get-Command 返回

PS C:\Users\hardya>  ((Get-Command minikube).definition)
C:\PATH\minikube.exe
PS C:\Users\hardya>  ((Get-Command docker).definition)
C:\Program Files\Docker\Docker\Resources\bin\docker.exe
PS C:\Users\hardya>  ((Get-Command kubectl).definition)
C:\Program Files\Docker\Docker\Resources\bin\kubectl.exe

答案1

我使用 Start-Process 运行 cvs.exe,它每次都会生成一个新窗口,直到我注意到该-NoNewWindow参数。

尝试运行如下 Kubernetes 命令:

$exe = Get-Command minikube
$arg = @('-foo', '-bar boo') # Whatever args you need, one arg per string
Start-Process -NoNewWindow -PassThru -FilePath $exe -ArgumentList $arg

如果您需要等待命令完成后再执行其他操作,请执行以下操作:

$exe = Get-Command minikube
$arg = @('-foo', '-bar boo') # Whatever args you need, one arg per string
$proc = Start-Process -NoNewWindow -PassThru -FilePath $exe -ArgumentList $arg
$proc.WaitForExit()

Start-Process -Wait也可能有效,但我使用$proc.WaitForExit()因为-Wait在某些时候对我来说不起作用,我找到了解决方法堆栈溢出(自然而然地)并且继续使用它,因为它有效。

也可以看看启动进程-NoNewWindow在当前控制台窗口中启动新进程。默认情况下,在 Windows 上,PowerShell 会打开一个新窗口。在非 Windows 系统上,您永远不会看到新窗口。

相关内容