我可以从现有的窗口中打开一个powershell窗口,并为其提供代码以运行here
但是一旦代码运行,我无法让第二个窗口保持打开状态
这是我要在第一个powershell窗口中运行的内容,我希望打开的powershell窗口在运行代码后保持打开状态(当前,它会立即关闭)
start powershell { ECHO "hi" }
我尝试了一些建议here,但没有任何运气
此外,我使用start powershell { ECHO "hi"; TIMEOUT 20 }
之类的东西得到了某种修复,但这并不能使窗口永久打开
答案 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
-都隐式绑定到:
-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