包含提权重启新实例的PowerShell脚本执行后如何自动关闭shell窗口
问题原因
你添加的管理员权限校验逻辑中,提权时会新启动一个PowerShell进程运行脚本,启动参数里包含-noexit,这个参数的作用是要求PowerShell执行完指定脚本后保持会话不退出,因此哪怕脚本末尾添加了exit语句,新启动的进程依然不会自动关闭,这就是问题的根源。
修复方案
- 直接删除
Start-Process参数中的-noexit即可,修改后的对应代码段如下:
Start-Process pwsh -Verb RunAs -ArgumentList ('-noprofile -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
- 如果需要临时调试脚本执行过程,可以临时保留
-noexit参数,调试完成后再删除即可满足执行完自动关闭窗口的需求。
补充说明
删除-noexit参数后,脚本所有逻辑执行完成后会自动退出PowerShell进程,无需额外在脚本末尾添加exit语句也能自动关闭窗口。如果你的脚本中有分支跳转逻辑需要主动终止,依然可以保留末尾的exit语句指定退出状态码。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

