You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell脚本如何检测管理员权限并使用带指定后缀的管理员账号重运行

PowerShell 自动提权重运行脚本(适配固定后缀管理员账号场景)

实现功能

  • 自动检测当前PowerShell会话是否具备管理员权限
  • 权限不足时自动弹出凭证输入框,默认展示带.A后缀的管理员账号选项
  • 验证通过后自动以管理员权限重运行当前脚本,无需手动右键选择管理员身份启动

完整代码

# 检测当前是否为管理员权限运行
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$isAdmin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if (-not $isAdmin) {
    # 筛选本地所有带.A后缀的启用状态管理员账号,域环境可替换为Get-ADUser的对应筛选逻辑
    $adminAccounts = Get-LocalUser | Where-Object { $_.Name -like "*.A" -and $_.Enabled } | Select-Object -ExpandProperty Name
    $defaultUser = $adminAccounts.Count -gt 0 ? $adminAccounts[0] : ""

    # 弹出凭证输入框
    $adminCred = Get-Credential -Message "请输入带.A后缀的管理员凭证以继续运行脚本" -UserName $defaultUser
    if (-not $adminCred) {
        Write-Host "未获取到有效管理员凭证,脚本退出"
        exit 1
    }

    # 以管理员权限重启当前脚本,PowerShell 5.1请将pwsh替换为powershell
    Start-Process pwsh -ArgumentList "-NoExit -File `"$($MyInvocation.MyCommand.Path)`"" -Credential $adminCred -Verb RunAs
    # 退出当前普通权限进程
    exit 0
}

# 下方放置你的业务脚本逻辑
Write-Host "当前已获得管理员权限,开始执行业务逻辑"

注意事项

  • 若使用PowerShell 5.1及更早版本,将代码中的pwsh替换为powershell即可
  • 不需要保留重运行后的旧会话窗口的话,可以删除-NoExit参数
  • 域环境下需要筛选域内带.A后缀的管理员账号时,将Get-LocalUser替换为对应域账号查询命令即可

内容的提问来源于stack exchange,提问作者Fluffarmy223

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:09:02