从现有的Powershell窗口中打开一个Powershell窗口,并在运行代码后使其保持打开状态

时间:2019-06-15 04:28:52

标签: powershell

我可以从现有的窗口中打开一个powershell窗口,并为其提供代码以运行here

但是一旦代码运行,我无法让第二个窗口保持打开状态

这是我要在第一个powershell窗口中运行的内容,我希望打开的powershell窗口在运行代码后保持打开状态(当前,它会立即关闭)

start powershell { ECHO "hi" }

注意

我尝试了一些建议here,但没有任何运气

此外,我使用start powershell { ECHO "hi"; TIMEOUT 20 }之类的东西得到了某种修复,但这并不能使窗口永久打开

2 个答案:

答案 0 :(得分:4)

PowerShell -Command {Write-Host "Test" } -NoExit

来自about Powershell。要在新窗口中启动Powershell,可以使用:

start-process  powershell.exe -ArgumentList "-noExit", "-command","Write-host 'TEST'; Write-Host 'Test2'"

重要的-Command必须是最后一个参数(about Powershell):

  

当Command的值为字符串时,Command必须是最后指定的参数,因为在该命令之后键入的任何字符都将被解释为命令参数。

答案 1 :(得分:2)

通常:

如果您传递命令-Command脚本文件-File)以执行PowerShell的CLI(powershell.exe Windows PowerShell 中,在{<1}}在PowerShell Core 中),默认情况下,PowerShell执行命令/脚本,然后执行退出

指定了要执行的命令或脚本,如果希望新会话保持打开状态,则需要添加pwsh.exe开关。

注意:(除非您在PowerShell中使用 script块直接调用 ),是一个 positional 参数-即,两个都不以-NoExit-Command-都隐式绑定到:

    Windows PowerShell中的
  • -File
  • -Command在PowerShell Core中。

因此,建议显式使用目标参数名称。


使用-File(别名为Start-Process

start可以在Windows PowerShell中运行(但不能在PowerShell Core中运行),但是需要注意的是,您实际上不能将 script块传递给start powershell { ECHO "hi" },而只能传递字符串

Start-Process接受可执行文件名称(暗示Start-Process参数)和 array 字符串 string 参数(暗示-FilePath / -ArgumentList参数。

如果您传递了 script块-Args),则会自动对其进行字符串化,这意味着将使用其文字内容

因此,您的命令-根据需要应用了{ ... }-应该是(带有明确命名的参数):

-NoExit