powershell运行脚本权限提升
18 2025-11-30 19:10
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
加载个人及系统配置文件用了 4027 毫秒。
(python311) PS C:\Users\Administrator> Set-ExecutionPolicy Bypass -Scope LocalMachine -Force
Set-ExecutionPolicy : Windows PowerShell 已成功更新你的执行策略,但在更具体的作业域中定义的策略覆盖了该设置。由于发生覆
盖,你的外壳程序将保留其当前的有效执行策略 RemoteSigned。请键入“Get-ExecutionPolicy -List”以查看你的执行策略设置。有
关详细信息,请参阅“Get-Help Set-ExecutionPolicy”。
所在位置 行:1 字符: 1
+ Set-ExecutionPolicy Bypass -Scope LocalMachine -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException
+ FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionPolicyCommand
(python311) PS C:\Users\Administrator> Set-ExecutionPolicy Bypass -Scope CurrentUser -Force
(python311) PS C:\Users\Administrator> Get-ExecutionPolicy
Bypass
(python311) PS C:\Users\Administrator>
我通过powershell命令进入powershell之后再调用run_mqtt.ps1就没有执行策略,而我在文件夹右键点击run_mqtt.ps1文件,选择使用powershell执行,就又出现执行策略。怎么办
原因
两种启动方式 不在同一个“执行策略作用域”:
两种启动方式 不在同一个“执行策略作用域”:
-
手动打开 PowerShell 窗口 → 进程级策略已经被 Anaconda 或你之前设过,所以能跑。
-
右键 → 使用 PowerShell 运行 → Windows 会 重新开一个 全新的
powershell.exe进程,没有任何事先设置,于是又回到了默认Restricted,就再次弹框。
解决思路
把策略写到 “本地计算机” 或 “当前用户” 的 注册表 里,这样不管怎么启动 PowerShell 都能读到;或者给右键菜单加一个“带 Bypass 参数”的入口。下面给你 3 种常用方案,按安全等级从高到低,你挑一个即可。
把策略写到 “本地计算机” 或 “当前用户” 的 注册表 里,这样不管怎么启动 PowerShell 都能读到;或者给右键菜单加一个“带 Bypass 参数”的入口。下面给你 3 种常用方案,按安全等级从高到低,你挑一个即可。
方案 1:给“当前用户”永久设 RemoteSigned(最干净)
-
在 手动打开的 PowerShell 窗口(已经能跑脚本的那个)里执行:powershell
复制
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
如果之前已经执行过,可再确认一次:
powershell
-
复制
Get-ExecutionPolicy -List确保CurrentUser这一行是RemoteSigned。 -
关闭窗口。
以后无论 Win+X → PowerShell、右键 → 使用 PowerShell 运行 还是 Anaconda Prompt (PowerShell),都不会再提示。
方案 2:只给“本地计算机”设一次(对所有用户生效,需管理员)
-
开始菜单 → Windows PowerShell → 右键 → 以管理员身份运行
-
powershell
-
复制
Set-ExecutionPolicy -Scope LocalMachine RemoteSigned这样整台电脑所有账户、任何启动方式都统一策略,一次性解决。
方案 3:不改策略,给右键加个“Bypass”条目(最灵活)
如果你不想动全局策略,可以新建一个右键菜单,专门用
-ExecutionPolicy Bypass 启动脚本。把下面内容保存为
install-bypass-context.reg 并双击导入注册表:reg
复制
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\Bypass-Run]
@="使用 PowerShell (Bypass) 运行"
[HKEY_CLASSES_ROOT\Microsoft.PowerShellScript.1\Shell\Bypass-Run\Command]
@="powershell.exe -ExecutionPolicy Bypass -File \"%1\""
导入后,
“使用 PowerShell (Bypass) 运行”,点它就不会弹策略框,也不会改动系统策略。
.ps1 文件右键会多出一项“使用 PowerShell (Bypass) 运行”,点它就不会弹策略框,也不会改动系统策略。
快速结论
-
最省心:方案 1 给
CurrentUser设RemoteSigned,一次搞定。 -
多人共用电脑:方案 2 给
LocalMachine设。 -
完全不想改策略:方案 3 加右键 Bypass 菜单。
任选其一后,右键运行 和 手动打开窗口 都会一致,不再出现执行策略提示。
全部评论