我正在从.bat运行powershell脚本,以使其双击友好。这是代码:
powershell.exe -ExecutionPolicy unrestricted -NoExit -command "Start-Process powershell -Verb RunAs" {<Location of .ps1 file here>; <arguments>; pause }
它运行正常,但是完成后会显示“按任意键继续”,并且关闭Powershell窗口,但我需要保持打开状态,因为在脚本末尾,它显示了一些我们需要运行的其他命令来完成处理。
有什么想法吗?谢谢!
答案 0 :(得分:1)
要在使用-Command
(或-File
)执行命令后使PowerShell窗口保持打开状态(会话仍处于活动状态),请使用CLI的-NoExit
参数,如您对外部 PowerShell调用的问题中所示。
然后,您将不需要交互式的延迟关闭命令,例如pause
(该函数仅调用$null = Read-Host 'Press Enter to continue...'
)。
因此:
向内部{em> ,-NoExit
启动的PowerShell实例添加Start-Process
参数,或者更有可能是代替;您需要滚动到右侧才能在下面的命令中查看它。
从内部命令字符串中删除pause
命令。
注意:我假设您实际上不需要外部-NoExit
,因为它将通过进入交互式PowerShell会话无限期地阻止批处理文件,因此在下面的命令中将其省略。
powershell.exe -ExecutionPolicy unrestricted -command "Start-Process powershell -Verb RunAs '-NoExit', '-Command', '...'"
请注意,将脚本块({ ... }
)与Start-Process
一起使用是没有意义的,因为Start-Process
仅支持 strings 作为参数;因此,上面使用'...'
表示传递给内部PowerShell实例的命令字符串。