vscode执行策略

14 阅读3分钟

vscode终端执行命令

PS D:\idea_work\xx\xx> xxcode

报错如下:

xxcode : 无法加载文件 D:\Node\node-v24.12.0-win-x64\xxcode.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/g o.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1

  • xxcode
  •   + CategoryInfo          : SecurityError: (:) [],PSSecurityException
      + FullyQualifiedErrorId : UnauthorizedAccess
      +         Scope ExecutionPolicy
          ----- ---------------
    

解决:

1.查看powershell的当前的执行策略

PS D:\xx\xx\xx> Get-ExecutionPolicy
打印结果:
Restricted

或者:

PS D:\idea_work\xx\xx> Get-ExecutionPolicy -List
打印结果:
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine      Restricted

2.设置脚本执行策略

  Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
  • Set-ExecutionPolicy:是 PowerShell 的一个内置 cmdlet(命令) ,用于修改 PowerShell 的执行策略(Execution Policy) 。 执行策略决定了 PowerShell 是否允许运行脚本(.ps1 文件),以及对脚本来源的信任程度。

  • RemoteSigned:是要设置的执行策略类型,含义如下:

    •  本地创建的脚本:可以直接运行(不需要签名)。

    • 从网络下载的脚本(如通过浏览器、邮件、远程共享等):必须由受信任的发布者进行数字签名,否则拒绝运行。

    • 未签名的远程脚本会报错

    RemoteSigned 是 Windows 客户端(如 Win10/Win11)上推荐的安全与可用性平衡策略,比默认的 Restricted 更宽松,又比 Unrestricted 更安全。

  • -Scope CurrentUser:指定该策略应用的范围(作用域)当前用户,而不是整个计算机。 这意味着:只影响当前登录的用户不需要管理员权限(普通用户即可运行此命令);策略保存在当前用户的注册表中(HKEY_CURRENT_USER);其他用户不受影响,仍使用他们自己的或系统的默认策略。

这是最安全且最常用的设置方式,尤其适合开发者或普通用户在自己账户下运行脚本。

Get-ExecutionPolicy 和 Get-ExecutionPolicy -List

Get-ExecutionPolicy 和 Get-ExecutionPolicy -List 都是 PowerShell 中用于查看执行策略(Execution Policy)的命令,但它们的输出内容和用途有明显区别。 Get-ExecutionPolicy 和 Get-ExecutionPolicy -List 都是 PowerShell 中用于查看执行策略(Execution Policy) 的命令,但它们的输出内容和用途有明显区别。

1. Get-ExecutionPolicy

  • 作用:返回当前生效的执行策略(即实际起作用的那个策略)。
  • 输出:仅显示一个策略名称(字符串),例如 RestrictedRemoteSignedUnrestricted 等。
  • 逻辑:PowerShell 会从多个作用域(Scope)中按优先级选择一个最终生效的策略,这个命令就返回那个最终结果

💡 类似于“当前系统实际采用的安全策略是什么”。

示例:
PS C:> Get-ExecutionPolicy
RemoteSigned

2. Get-ExecutionPolicy -List

  • 作用:列出所有作用域(Scopes) 中设置的执行策略,包括哪些被显式配置、哪些是默认值。

  • 输出:以表格形式显示多个作用域及其对应的策略,包括:

    • MachinePolicy(组策略:计算机)
    • UserPolicy(组策略:用户)
    • Process(当前 PowerShell 进程,临时)
    • CurrentUser(当前用户的策略)
    • LocalMachine(本机默认策略)

💡 类似于“所有可能影响执行策略的设置有哪些,各自是什么”。

示例:
PS C:> Get-ExecutionPolicy -List

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

执行策略的优先级顺序(从高到低)

  1. MachinePolicy(组策略设置,最高优先级)
  2. UserPolicy
  3. Process(通过 -ExecutionPolicy 参数启动 PowerShell 时设置)
  4. CurrentUser
  5. LocalMachine(最低优先级,但通常是默认设置)

如果某个高优先级作用域设置了策略(如 MachinePolicy = Restricted),即使 LocalMachine = RemoteSigned,最终生效的仍是 Restricted

使用建议:

  • 日常检查:用 Get-ExecutionPolicy

  • 排查问题(比如改了策略但没生效):用 Get-ExecutionPolicy -List

  • 修改策略时,通常用:

    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser