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

Active directory 如何在运行PowerShell脚本后保持shell窗口打开?,active-directory,powershell-2.0,Active Directory,Powershell 2.0,我有一个很短的PowerShell脚本,它连接到服务器并导入AD模块。我想通过双击来运行脚本,但恐怕窗口在最后一行之后会立即关闭 我怎样才能解决这个问题呢?呃。。。 我应该知道: powershell -noexit <path\script> powershell-noexit 这就是它的全部内容:)我所描述的,您基本上有3个选项来防止PowerShell控制台窗口关闭 一次性修复:从PowerShell控制台运行脚本,或使用-NoExit开关启动PowerShell进程。e

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

我怎样才能解决这个问题呢?

呃。。。 我应该知道:

powershell -noexit <path\script> 
powershell-noexit

这就是它的全部内容:)

我所描述的,您基本上有3个选项来防止PowerShell控制台窗口关闭

  • 一次性修复:从PowerShell控制台运行脚本,或使用-NoExit开关启动PowerShell进程。e、 g.
    PowerShell-NoExit“C:\SomeFolder\SomeScript.ps1”
  • 每个脚本修复:在脚本文件末尾添加输入提示。e、 g.
    读取主机-提示“按Enter键退出”
  • 全局修复:通过添加
    -NoExit
    开关更改注册表项,以在脚本完成运行后始终保持PowerShell控制台窗口打开

  • 请参阅我的博客,以了解更多信息和要下载的脚本,该脚本将为您更改注册表。

    以下解决方案可防止在运行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
    }
    

    在我自己的例子中,我想将powershell添加到Windows7的上下文菜单中。也就是说,右键单击文件夹或文件夹内部,可以获得一个菜单,启动Powershell窗口时不会在启动后关闭它。这里的答案帮助我做到了这一点,我想在这里分享它,以防它帮助其他人

    • 按WIN+R启动注册表编辑器 键入regedit.exe并按enter键
    • 导航到HKEY\U CLASSES\U ROOT\Directory\Background\shell
    • 右键单击shell并创建一个密钥,并为其命名,例如PowershellHere
    • 在右侧窗格中,双击Default并在此处提供描述性名称,例如Powershell
    • 右键单击您先前创建的PowershellHere密钥,然后创建一个新密钥并将其命名为“command”。请确保您将其命名为“command”,但不带引号
    • 在右侧窗格中,双击Default,然后键入下面的命令
    • C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe-noexit-Command CD'%1' -noexit标志确保Powershell窗口不会在启动后立即关闭 ““%1”标志表示右键单击的文件夹 -命令CD“%1”将确保Powershell更改为右键单击的目录
    要使右键单击在文件夹内工作,即右键单击文件夹内的空白区域,请重复上述步骤,但这次注册表位置为:

    HKEY\U CLASSES\U ROOT\Directory\shell
    命令是:
    C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe-noexit

    在Windows7UltimateSP1上测试过,但我想我可能也适用于更高版本的windows


    只需在脚本底部的新行上添加pause,如在批处理文件中。

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

    @IgorGanapolsky问题可能是您在脚本路径之后追加了-NoExit,它需要在脚本路径之前。我认为,如果是在它将其作为参数传递给脚本而不是powershell.exe.Related(重复):OPs-answer也可以按照脚本修复:使用
    powershell-NoExit-Command{}
    包装脚本,使用户可以通过UI启动脚本,并在不编辑注册表项的情况下查看结果
    # 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
    }