在当前路径打开管理员 PoweShell 窗口,以及在既有普通 Shell 提升创建管理员 Shell,维持当前目录不变

作者:一年又一年 分类: 📐 技术 发布时间:2020-8-21 17:32 4200 次浏览 0 条评论

Title: "Open PowerShell (Admin) Window Here" from Explorer, and A Ease Way to Start (Elevate) A New Admin Shell from An Normal Shell with Current Working Directory Unchanged.
- Article in Chinese only -

很多人也许知道,Windows 资源管理器打开文件夹,在窗口的空白区按住 shift + 右键单击,这样会弹出“扩展”右键菜单,这个扩展菜单相比普通菜单多出一些菜单项,如 "在此处打开 Powershell 窗口(S)" (Open PowerShell window here) —— 它以当前目录为工作目录打开 PowerShell,而不必我们亲自 cd (Set-Location) 切换,很方便。

不过这样打开的这个 PowerShell 运行在普通非管理员用户身份下,只有普通权限。然而我们有时候想在当前目录下执行一些高权限操作,需要 UAC 开管理员身份的 Shell。那么怎么在资源管理器中,从当前目录以管理员身份 (Administrator) 打开一个 PoweShell 呢?有没有与之等效的快捷入口? ——像是 "在此处打开 Powershell (管理员) 窗口(A)" (Open PowerShell (Admin) window here) 这样的?


……答案是:目前我没有找到等效的快捷入口,都需要自己手动切目录。

写这篇文章的时候又仔细查了一下,发现还真有一个等效的入口,藏在资源浏览器顶上的 Ribbon 菜单里:文件 —— "打开 Windows PowerShell" 旁边的 ">(更多)" (S) —— 以管理员身份打开 PowerShell (A)。快捷键是:Alt F S A(顺序按而非一起按)。emmm 如果是按这几个快捷键的话,效率好像还可以接受?


如果不用这个入口,退一步考虑,看看能不能先打开一个普通权限的 PowerShell,然后在这个 shell 里执行个什么简单 Command 能让我提升(Elevate)到管理员权限,并且是“就地”提升,继承当前的工作目录 (preserve current working directory),不需要我再自己切换目录。

……

可惜,PowerShell 中也并没有现成的就地权限提升 Command,不能只敲几个字母实现。

但是可以写这样一长串实现:

Start-Process PowerShell -Verb RunAs "-noexit -command Set-Location -LiteralPath `"$pwd`""

上述脚本复刻了 Windows 资源管理器中“在此处打开 Powershell 窗口(S)”菜单项的运行参数

-noexit -command Set-Location -LiteralPath "...(Current-Path-in-Explorer)"

并且加上了以管理员身份运行 (Run as Administrator)

Start-Process PowerShell -Verb RunAs

这么长的一串脚本,我是拒绝的,因为谁记得住啊(虽然相比其他神奇脚本,不算特别长)。每次手写还不如我自己 cd。

因此,加一个自定义 Command 吧。



有用户通过修改注册表 DIY 右键菜单,自己实现了 "在此处打开管理员 PowerShell 窗口" 菜单项,参阅:https://www.tenforums.com/tutorials/60177-add-open-powershell-window-here-administrator-windows-10-a.html

https://www.powershellmagazine.com/2013/06/25/pstip-how-to-start-an-elevated-powershell-from-windows-explorer/


Windows PowerShell Administrator Explorer UAC

♥ 若您欲转载敝站的原创内容,还请您附注出处及相应链接

发表评论

* 标注的项目为必填项。

您的邮箱地址将不会在页面中公开
您的站点地址将会被检查,如被认为不适则可能被移除
Ɣ回顶部