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

Jus*_*Guy 47 active-directory powershell-2.0

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

我该如何解决这个问题?

dea*_*dog 81

您基本上有3个选项可以阻止PowerShell控制台窗口关闭,我在博客文章中有更详细的描述.

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

有关要修改的注册表项的详细信息,请参阅我的博客.

  • OP 答案也可作为每个脚本的修复程序:使用 `powershell -NoExit -Command { <实际运行的脚本> }` 包装您的脚本 使用户能够通过 UI 启动脚本并查看结果,而无需编辑注册表项 (3认同)

Jus*_*Guy 17

呃......我应该知道的:

powershell -noexit <path\script> 
Run Code Online (Sandbox Code Playgroud)

这就是它的全部:)

  • @IgorGanapolsky问题可能是你在脚本路径后追加-NoExit,它需要先去.我认为如果它是在它作为参数传递给脚本而不是powershell.exe之后. (4认同)
  • 出于某种原因,即使在我运行命令后,我的shell脚本仍会退出... (3认同)

ave*_*oes 6

以下解决方案可防止脚本在运行 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
}
Run Code Online (Sandbox Code Playgroud)