我知道PowerShell有一点-noexit
开关。
有没有使用该开关而留在shell中?
换句话说,我想要一个执行的脚本命令,然后打开shell。
答案 0 :(得分:15)
您基本上有3个选项可以阻止PowerShell控制台窗口关闭,我描述了in more detail on my blog post。
PowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
Read-Host -Prompt "Press Enter to exit"
有关要修改的注册表项的详细信息,请参阅我的博客。
听起来你正在寻找选项#1或#3。
答案 1 :(得分:13)
如果您在没有参数的情况下运行此脚本,则此脚本不会退出,例如双击它:
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'
答案 2 :(得分:10)
你试过吗
$host.enternestedprompt()
这将停止执行并将其删除到嵌套提示符。当他们退出该提示时,脚本将完成,窗口将关闭。
答案 3 :(得分:3)
"do stuff"
Pause
是的,就像命令行 - 输出:
do stuff
Press Enter to continue...:
答案 4 :(得分:3)
这个简单脚本末尾的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 }
}
我确信其他人将能够分享一些改进,但这是一个开始。问候。
答案 5 :(得分:2)
我不知道你可以在脚本中运行的命令,如果没有使用-noexit
命令调用shell,它将阻止shell退出。
如果我不希望shell关闭,我通常会在最后使用Read-Host "Press ENTER to continue"
。但是,如果尚未使用-noexit
启动,则不会阻止shell关闭。
答案 6 :(得分:1)
喜欢这个吗?
PowerShell -File c:\myscript.ps1 -NoExit
答案 7 :(得分:0)
另一种方法是使用 $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")
答案 8 :(得分:-1)
Powershell -noexit -command {
$a=1
Echo $a
} # End block
# Script ends but PowerShell windows remains.
答案 9 :(得分:-2)
不要复活一个有6年历史的帖子或任何东西,但任何人都应该注意到你可以用
来结束你的剧本Stop-Process -processname regedit
如果您启用了注册表调整(全局修复)并且实际上想要运行自动关闭脚本。