在没有 运行 的情况下以管理员身份在 PowerShell(Windows 终端)中获得管理员权限

get administrator privileges in PowerShell (Windows Terminal) from without running it as an administrator

即使您是权威用户并且需要做一些需要扩展权限的事情,我也必须通过右键单击它再次 运行 终端,选择“运行 作为管理员”不像在 Linux 和其他操作系统中,我们可以借助“su”或“sudo”。

我的问题是:有没有办法获得与管理员相同的终端 window?

以编程方式在 Windows 上启动 提升的 新 PowerShell 会话(具有管理权限)- 总是在 new window - 从现有会话中,使用:

注:

  • 下面的命令总是在 - 总是新的 - 常规控制台 windowconhost.exe) - 请参阅下一节以从 Windows 终端.
  • 使用
Start-Process -Verb RunAs (Get-Process -Id $PID).Path

以上内容适用于两个 PowerShell 版本,并使用与 运行 当前会话相同的可执行文件;如果您知道可执行文件的名称并且可以假定它是 $env:PATH 中的第一个,则可以使用快捷方式仅按名称调用;对于 Windows PowerShell:
Start-Process -Verb RunAs powershell
PowerShell(核心)7+:
Start-Process -Verb RunAs pwsh

请参阅 了解 便利功能 ,包括 cross-platform 使用和将 命令 传递给在提升的会话中执行。


Windows终端中打开提升的会话(也总是在新window):

# As above, 'powershell.exe' or 'pwsh.exe' may do as the argument.
# See below for Windows Terminal profile-related options.
Start-Process -Verb RunAs wt.exe ('"{0}"' -f (Get-Process -Id $PID).Path)

注:

  • 如果所需的 PowerShell 可执行文件是您的 Windows 终端的 默认配置文件 ,您可以省略 wt.exe[= 之后的参数22=]

    # Launch the elevated session with the shell configured as
    # the default profile.
    Start-Process -Verb RunAs wt.exe
    
  • 如果您想要针对特定的Windows终端配置文件,请传递其名称(或 GUID)case-exactly-p (--profile) 参数;例如:

    # Launch the elevated session with the "Windows PowerShell" profile.
    Start-Process -Verb RunAs wt.exe '-p "Windows PowerShell"'