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执行,就又出现执行策略。怎么办

原因
两种启动方式 不在同一个“执行策略作用域”
  1. 手动打开 PowerShell 窗口 → 进程级策略已经被 Anaconda 或你之前设过,所以能跑。
  2. 右键 → 使用 PowerShell 运行 → Windows 会 重新开一个 全新的 powershell.exe 进程,没有任何事先设置,于是又回到了默认 Restricted,就再次弹框。
解决思路
把策略写到 “本地计算机”“当前用户”注册表 里,这样不管怎么启动 PowerShell 都能读到;或者给右键菜单加一个“带 Bypass 参数”的入口。下面给你 3 种常用方案,按安全等级从高到低,你挑一个即可。

方案 1:给“当前用户”永久设 RemoteSigned(最干净)
  1. 手动打开的 PowerShell 窗口(已经能跑脚本的那个)里执行:
    powershell
     
复制
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
 
如果之前已经执行过,可再确认一次:
powershell
 
  1. 复制
    Get-ExecutionPolicy -List
     
    确保 CurrentUser 这一行是 RemoteSigned
  2. 关闭窗口。
    以后无论 Win+X → PowerShell右键 → 使用 PowerShell 运行 还是 Anaconda Prompt (PowerShell),都不会再提示。

方案 2:只给“本地计算机”设一次(对所有用户生效,需管理员)
  1. 开始菜单 → Windows PowerShell → 右键 → 以管理员身份运行
  2. powershell
     
  1. 复制
    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\""
 
导入后,.ps1 文件右键会多出一项
“使用 PowerShell (Bypass) 运行”,点它就不会弹策略框,也不会改动系统策略。

快速结论
  • 最省心:方案 1CurrentUserRemoteSigned,一次搞定。
  • 多人共用电脑:方案 2LocalMachine 设。
  • 完全不想改策略:方案 3 加右键 Bypass 菜单。
任选其一后,右键运行手动打开窗口 都会一致,不再出现执行策略提示。

 

 

 

 

 

 

 

 

 

 

 

 

全部评论

·