首先,我更喜欢使用 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 系统上,您永远不会看到新窗口。