gpt4 book ai didi

具有提升权限的 Windows 核心运行命令

转载 作者:行者123 更新时间:2023-12-03 01:01:07 25 4
gpt4 key购买 nike

标准用户有几个选项可以以管理员(或任何其他用户)身份运行,但是,即使以管理员身份登录,某些功能也需要“提升”运行。

在 Windows gui 上,只需右键单击 .exe并选择 run as Administrator甚至提升“cmd”或“powershell”。

如何在 Windows 核心上获得提升的权限?

最佳答案

通常,要在 Windows 上以编程方式调用具有提升(以管理员身份运行)的可执行文件,请使用 Start-Process 带有 -Verb RunAs 的 cmdlet .
这同样适用于 pwsh.exe ,PowerShell Core 可执行文件,因此在最简单的情况下,您可以编写:

# Open a new console window with PowerShell Core running with admin privileges.
Start-Process -Verb RunAs pwsh

如果您想将其包装在 中便捷功能这也更强大, Windows 上的跨版本 (也适用于 Windows PowerShell):
  • 备注 :有关更复杂的功能,请参阅底部部分,可从 Gist 下载,特别是还允许传递命令以在提升的 PowerShell session 中执行。

  • function Enter-AdminPSSession {
    Start-Process -Verb RunAs (Get-Process -Id $PID).Path
    }

    # Optionally also define a short alias name:
    # Note: 'psa' is a nonstandard alias name; a more conformant name would be
    # the somewhat clunky 'etasn'
    # ('et' for 'Enter', 'a' for admin, and 'sn'` for session), analogous
    # to built-in 'etsn' alias referring to 'Enter-PSSession'
    Set-Alias psa Enter-AdminPSSession
    如果您希望该功能也为 跨平台 (也适用于类 Unix 平台):
    function Enter-AdminPSSession {
    if ($env:OS -eq 'Windows_NT') {
    Start-Process -Verb RunAs (Get-Process -Id $PID).Path
    } else {
    sudo (Get-Process -Id $PID).Path
    }
    }
    重要 :由于涉及 cmdlet/实用程序,
  • 在 Windows 上,新 session 总是在新的控制台窗口中打开。
  • 新 session 是管理 session 这一事实反射(reflect)在其窗口的标题(前缀 Administrator: )
  • 中。

  • 在 Unix(Linux、macOS)上,新 session 总是在同一个控制台(终端)窗口中打开。
  • 在 Unix 上没有明显的指示表明已进入管理 session ;运行 whoami是一种快速测试的方法(在管理 session 中返回 root);更好的解决方案是修改 prompt函数在提示字符串中反射(reflect)管理 session ,就像接下来讨论的预打包解决方案一样。


  • 如果您还需要 能够在新 session 中运行命令并可选择自动关闭它 ,需要做更多的工作:
    可以下载功能Enter-AdminPSSession来自 this Gist , 哪一个:
  • 允许通过脚本块( { ... } )执行传递命令
  • 默认情况下保持 session 打开,以便可以检查命令输出,但您可以选择退出 -Exit-ExitOnSuccess (仅当没有发生错误时才关闭 session )。
  • 试图反射(reflect)通过 $LASTEXITCODE 传递的命令的整体成功(即使对于 PowerShell 本地命令,通常也不会设置此变量); 0表示成功。

  • 确保调用 session 的当前位置(工作目录)也是提升 session 的当前位置。
  • 允许您选择不加载配置文件,使用 -NoProfile
  • 在交互式提升的 session 中使用 [admin]  作为提示字符串的前缀,在所有平台上。

  • 假设您已查看链接的 Gist 的源代码以确保它是安全的(我个人可以向您保证,但您应该始终检查),您可以 安装 Enter-AdminPSSession直接如下 :
    irm https://gist.github.com/mklement0/f726dee9f0d3d444bf58cb81fda57884/raw/Enter-AdminPSSession.ps1 | iex
    示例调用 (假设 Set-Alias psa Enter-AdminPSSession 已被调用):
  • 进入交互式提升 session :

  • psa
  • Windows:在不加载配置文件的情况下进入提升的 session 并设置所有用户执行策略,如果成功则退出。

  • psa -NoProfile -ExitOnSuccess { Set-ExecutionPolicy -Scope LocalMachine RemoteSigned }
  • Unix:获取文件 /etc/sudoers 的内容(只能用管理权限读取),然后退出:

  • psa -Exit { Get-Content /etc/sudoers }

    关于具有提升权限的 Windows 核心运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199624/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com