如何在运行PowerShell脚本后保持shell窗口打开?

时间:2013-05-24 16:11:51

标签: active-directory powershell-v2.0

我有一个非常短的PowerShell脚本,它连接到服务器并导入AD模块。我想通过双击来运行脚本,但我担心窗口会在最后一行后立即关闭。

我该如何解决这个问题?

6 个答案:

答案 0 :(得分:75)

您基本上有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 :(得分:17)

... Errr 我应该知道:

powershell -noexit <path\script> 

这就是它的全部内容:)

答案 2 :(得分:0)

下面的解决方案可以防止脚本在运行Powershell ISE时关闭,否则可以关闭脚本。

# If running in the console, wait for input before closing.
if ($Host.Name -eq "ConsoleHost")
{
    Write-Host "Press any key to continue..."
    $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
}

答案 3 :(得分:0)

在我自己的情况下,我想在Windows 7的上下文菜单中添加powershell。即,右键单击文件夹或文件夹内以获取菜单来启动Powershell窗口,而无需在启动后关闭它。这里的答案帮助我做到了这一点,我想在这里分享它,以防它对其他人有帮助。

  • 通过按WIN + R启动注册表编辑器 输入regedit.exe,然后按Enter键
  • 导航到 HKEY_CLASSES_ROOT \ Directory \ Background \ shell
  • 右键单击shell并创建一个密钥,为其命名,例如PowershellHere
  • 在右侧窗格中,双击“默认”并提供一个描述性名称,例如Powershell Here
  • 右键单击您先前创建的PowershellHere密钥,然后创建一个新密钥并将其命名为“ command”,请确保准确命名,但不要带引号。
  • 在右窗格中,双击“默认”,然后在下面键入命令
  • C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell.exe -noexit-命令CD'“%1”' -noexit标志可确保Powershell窗口在启动后不会立即关闭 '“%1”'标志代表您右键单击的文件夹 -命令CD'“%1”'将确保Powershell更改为右键单击的目录。

要使右键单击在文件夹内起作用,即右键单击文件夹内的空白区域,请重复上述步骤,但是这次,注册表位置为:

HKEY_CLASSES_ROOT \ Directory \ shell
命令是:
C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ PowerShell.exe -noexit

在Windows 7 Ultimate sp1上进行了测试,但我认为我也可以在更高版本的Windows上使用

答案 4 :(得分:0)

只需在脚本底部的新行上添加暂停,就像在批处理文件中一样。

答案 5 :(得分:0)

如果您只想让窗口保持打开状态,您可以在脚本的末尾添加 pause,或者如果您希望之后能够运行命令,您可以添加 powershell(显然不要如果其他人会使用您的代码,请不要执行第二个选项)。