能否让PowerShell Start-Process在Windows Terminal新建标签而非新窗口
Windows Terminal内直接打开提权PowerShell标签的实现方案
原命令的问题
你在当前PowerShell标签执行的start-process Powershell -Verb runas命令,本质是直接启动一个独立的、由传统conhost控制台承载的高权限PowerShell进程,既没有走Windows Terminal的标签创建逻辑,也因为UAC的进程隔离机制无法直接挂载到当前运行在标准权限下的Terminal窗口,所以必然弹出独立窗口。
核心限制说明
Windows UAC安全机制默认做了进程完整性级别隔离:运行在标准用户权限下的Windows Terminal主进程,没有权限直接生成高完整性级别的子进程挂载到自身窗口内,必须经过UAC提权确认的中转步骤,不存在无任何依赖的原生单命令直接实现方式。
可落地实现方法
方法1:使用Terminal内置的提权配置项(推荐,无第三方依赖)
该方法要求Windows Terminal版本在1.13及以上,操作步骤如下:- 打开Windows Terminal设置,点击左下角「打开JSON文件」,找到你常用的PowerShell对应的配置段
- 在配置段的参数里添加一行
"elevate": true,,保存JSON文件 - 之后需要开提权标签时,既可以直接在Terminal顶部下拉菜单选对应PowerShell配置,也可以在现有标签里执行以下命令触发:
wt -w 0 new-tab --profile "对应PowerShell配置文件的显示名称"命令中
-w 0参数指定在当前活动的Terminal窗口新建标签,执行后会弹出UAC提权确认框,确认后就会直接在当前窗口新建高权限PowerShell标签,不会弹出独立窗口。如果使用的是PowerShell 7+版本,把配置名改成对应的pwsh项名称即可。方法2:借助提权工具实现命令行快速触发
如果你习惯用单命令快速唤起提权标签,可以安装终端提权工具gsudo,安装完成后直接在当前标签执行以下命令:gsudo wt -w 0 new-tab -p "Windows PowerShell"触发UAC确认后就会直接在当前窗口新建提权标签,不需要修改Terminal配置。
内容的提问来源于stack exchange,提问作者user310291
相关产品推荐
相关产品推荐

