停止Powershell退出

时间:2012-02-20 14:27:41

标签: powershell powershell-v2.0 powershell-remoting

我知道PowerShell有一点-noexit开关。

有没有使用该开关而留在shell中?

换句话说,我想要一个执行的脚本命令,然后打开shell。

10 个答案:

答案 0 :(得分:15)

您基本上有3个选项可以阻止PowerShell控制台窗口关闭,我描述了in more detail on my blog post

  1. 一次性修复:从PowerShell控制台运行脚本,或使用-NoExit开关启动PowerShell进程。例如PowerShell -NoExit "C:\SomeFolder\SomeScript.ps1"
  2. 每个脚本修复:在脚本文件末尾添加输入提示。例如Read-Host -Prompt "Press Enter to exit"
  3. 全局修复:更改注册表项,以便在脚本完成运行后始终打开PowerShell控制台窗口。
  4. 有关要修改的注册表项的详细信息,请参阅我的博客。

    听起来你正在寻找选项#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")

结合其他答案有几个选项:

    1. 从命令提示符运行:PowerShell -NoExit "Path\to\Script\script.ps1"
    1. 添加到脚本末尾:pause
    1. 添加到脚本末尾:read-Host -Prompt "Press Enter to exit"
    1. 添加到脚本末尾:$host.enternestedprompt()
    1. 添加到脚本末尾:$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

如果您启用了注册表调整(全局修复)并且实际上想要运行自动关闭脚本。