我知道-noexit
PowerShell 有一个小开关。
无论如何,不使用那个开关就可以留在外壳中吗?
换句话说,我想要一个脚本命令执行然后让外壳保持打开状态。
我知道-noexit
PowerShell 有一个小开关。
无论如何,不使用那个开关就可以留在外壳中吗?
换句话说,我想要一个脚本命令执行然后让外壳保持打开状态。
您基本上有 3 个选项来阻止 PowerShell 控制台窗口关闭,我在我的博客文章中对此进行了更详细的描述。
PowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
Read-Host -Prompt "Press Enter to exit"
有关要修改哪些注册表项的更多信息,请参阅我的博客。
听起来您正在寻找选项#1 或#3。
如果您在没有参数的情况下运行该脚本,例如通过双击它,该脚本将不会退出:
param($Work)
# restart PowerShell with -noexit, the same script, and 1
if (!$Work) {
powershell -noexit -file $MyInvocation.MyCommand.Path 1
return
}
# now the script does something
# this script just outputs this:
'I am not exiting'
你有没有尝试过
$host.enternestedprompt()
这将停止执行并将它们放到嵌套提示中。当他们退出该提示时,脚本将完成并且窗口将关闭。
"do stuff"
Pause
是的,就像命令行一样 -- 输出:
do stuff
Press Enter to continue...:
我不知道您可以在脚本中运行的命令,如果没有使用该-noexit
命令调用它会阻止 shell 退出。
Read-Host "Press ENTER to continue"
如果我不想关闭外壳,我通常在最后使用。但是,如果外壳不是以-noexit
.
这个简单脚本末尾的 while 循环提示我输入命令并执行它。它与脚本环境一起运行,因此可以检查变量的值。输入“exit”会在执行时终止循环。
# Do something.
cd D:\temp
$current_directory = $(pwd)
dir
write-host # Just add a little space after the dir
# Stay in the shell and execute commands.
while ($TRUE) {
$cmd = Read-Host "PS $(pwd)"
if ($cmd[0] -eq '"') { iex "& $cmd" }
else { iex $cmd }
}
我相信其他人将能够分享一些改进,但这是一个开始。问候。
像这样?
PowerShell -File c:\myscript.ps1 -NoExit
另一种方法是使用$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
.
结合其他答案,有几个选项:
PowerShell -NoExit "Path\to\Script\script.ps1"
pause
read-Host -Prompt "Press Enter to exit"
$host.enternestedprompt()
$null = host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Powershell -noexit -command {
$a=1
Echo $a
} # End block
# Script ends but PowerShell windows remains.
不要恢复一个 6 年前的线程或任何东西,但任何阅读的人都应该注意,你可以用
Stop-Process -processname regedit
如果您启用了注册表调整(全局修复)并且实际上想要运行自动关闭脚本。