You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让PowerShell脚本自动以管理员权限运行

如何让PowerShell脚本自动以管理员权限运行

我懂你这种痛点——写好的PowerShell脚本改注册表、调电源计划,必须用管理员权限,但每次手动开 elevated 终端太麻烦,之前试的方法还没搞定对吧?给你几个实用的解决方案:

方法一:让脚本自动检测并提权(最推荐)

直接在你的脚本开头加一段权限检查代码,脚本运行时会自动判断是否有管理员权限,没有的话就弹窗请求提权,非常省心。

把这段代码放在你所有业务代码的最前面:

# 检查当前PowerShell进程是否拥有管理员权限
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (-not $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
    # 以管理员身份重新启动当前脚本
    Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
    exit
}

# 下面是你原本的测试代码,提权后才会执行
powercfg /setactive ab6534a3-bc02-4c44-94d1-a8535b2eb070
Set-ItemProperty -Path "HKLM:\SOFTWARE\Samsung\SamsungSettings\ModulePerformance" -Name "value" -Value "2"

原理很简单:先验证当前进程的权限,要是没管理员权限,就用Start-Process-Verb RunAs参数重启脚本,UAC确认后就会在 elevated 环境下执行所有命令了。

方法二:修复右键“以管理员身份运行”选项

你之前尝试添加这个右键选项没成功,可能是注册表操作的步骤有误,手动来一遍肯定能成:

  • Win+R输入regedit打开注册表编辑器
  • 定位到路径HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell
  • 右键点击Shell项,选择「新建」→「项」,把新项命名为RunAs
  • 选中刚创建的RunAs项,在右侧窗口双击(默认),把数值数据改成「以管理员身份运行」
  • 接着在RunAs项下面再新建一个子项,命名为Command
  • 选中Command项,右侧双击(默认),填入数值数据:powershell.exe -NoProfile -ExecutionPolicy Bypass -File "%1"
  • 关闭注册表编辑器,现在右键PS1文件就能看到「以管理员身份运行」的选项,点击后就会启动带管理员权限的终端执行脚本

方法三:创建带管理员权限的快捷方式

如果不想改脚本也不想碰注册表,给脚本做个快捷方式就行:

  • 右键你的PS1脚本,选择「创建快捷方式」
  • 右键这个新的快捷方式,打开「属性」
  • 切换到「快捷方式」标签页,点击「高级」按钮
  • 勾选「以管理员身份运行」,然后依次点击「确定」保存设置
  • 以后双击这个快捷方式,就会自动弹出UAC请求,确认后就能以管理员权限执行脚本了

备注:内容来源于stack exchange,提问作者Augusto Barbosa

火山引擎 最新活动