抑制 PowerShell 提示 "Press any key to continue..."

Supress PowerShell prompting "Press any key to continue..."

我是 运行 来自 .bat 的 powershell 脚本,使其易于双击。这是代码:

powershell.exe -ExecutionPolicy unrestricted -NoExit -command "Start-Process powershell -Verb RunAs" {<Location of .ps1 file here>; <arguments>; pause }

它运行良好,但当它完成时它说 "Press any key to continue" 并且 powershell window 关闭但我需要它保持打开状态,因为在脚本末尾它显示了一些我们需要的额外命令运行 完成流程。

有什么想法吗?谢谢!

要在使用 -Command(或 -File)执行命令后保持 PowerShell window 打开(其会话处于活动状态),请使用 CLI-NoExit 参数 ,正如您在 outer PowerShell 调用的问题中所显示的那样。

然后您就不需要交互式延迟关闭命令,例如 pause(这是一个简单地调用 $null = Read-Host 'Press Enter to continue...' 的函数)。

因此:

  • -NoExit 参数添加到 内部 Start-Process 启动的 PowerShell 实例,或者 - 更有可能 - 改为;您需要向右滚动才能在下面的命令中看到它。

  • 从内部命令字符串中删除 pause 命令。

注意:我假设您实际上并不需要外部 -NoExit,因为它会通过进入交互式 PowerShell 会话无限期地阻止批处理文件,因此在下面的命令中省略了它。

powershell.exe -ExecutionPolicy unrestricted -command "Start-Process powershell -Verb RunAs '-NoExit', '-Command', '...'"

请注意,在 Start-Process 中使用脚本块 ({ ... }) 没有意义,因为 [=17] 仅支持 字符串 作为参数=];因此,上面使用 '...' 来表示要传递给内部 PowerShell 实例的命令字符串。