在当前路径打开管理员 PoweShell 窗口,以及在既有普通 Shell 提升创建管理员 Shell,维持当前目录不变
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
发表评论