跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

乐达

  1. 主页
  2. 软件工程
  3. PowerShell
  4. PowerShell 的执行策略(Execution Policy)阻止了未签名脚本的运行

PowerShell 的执行策略(Execution Policy)阻止了未签名脚本的运行

已定时 已固定 已锁定 已移动 PowerShell
2 帖子 1 发布者 16 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Z 离线
    Z 离线
    zhongfangxiong
    写于 最后由 编辑
    #1

    报错

    PS Z:\erp\loda.framework.erp> .\getversionfiles.ps1
    .\getversionfiles.ps1 : 无法加载文件 Z:\erp\loda.framework.erp\getversionfiles.ps1。未对文件 Z:\erp\loda.framework.erp\
    getversionfiles.ps1 进行数字签名。无法在当前系统上运行该脚本。有关运行脚本和设置执行策略的详细信息,请参阅 https:/go.mi
    crosoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
    所在位置 行:1 字符: 1
    + .\getversionfiles.ps1
    + ~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : SecurityError: (:) [],PSSecurityException
        + FullyQualifiedErrorId : UnauthorizedAccess
    

    最优解

    powershell -ExecutionPolicy Bypass -File .\getversionfiles.ps1
    

    Kimi的专业解答

    这个错误提示是因为 PowerShell 的执行策略(Execution Policy)阻止了未签名脚本的运行。Windows 默认的执行策略是 Restricted 或 AllSigned,这会阻止你运行 .ps1 脚本,尤其是没有数字签名的脚本。

    解决方法(任选其一):


    ✅ 方法 1:临时绕过执行策略(推荐用于开发/测试)

    在 PowerShell 中运行以下命令,仅对当前会话有效,关闭窗口后失效:

    powershell -ExecutionPolicy Bypass -File .\getversionfiles.ps1
    

    ✅ 方法 2:更改当前用户的执行策略(永久生效)

    允许当前用户运行本地脚本,不需要签名:

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
    
    • RemoteSigned:本地脚本无需签名,远程脚本必须签名。
    • 系统会提示你确认,输入 Y 回车即可。

    ⚠️ 方法 3:更改全局执行策略(不推荐)

    如果你确实需要全局更改(对所有用户生效),请以管理员身份运行:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
    

    🔍 查看当前执行策略

    你可以先查看当前的执行策略:

    Get-ExecutionPolicy -List
    

    ✅ 总结

    方法 是否推荐 是否永久
    Bypass 临时运行 ✅ 推荐 ❌ 临时
    RemoteSigned 当前用户 ✅ 推荐 ✅ 永久
    全局更改 ⚠️ 不推荐 ✅ 永久

    如果你只是临时运行脚本,方法 1 是最安全快捷的。
    如果你经常运行本地脚本,方法 2 更适合你。

    1 条回复 最后回复
    0
    • Z 离线
      Z 离线
      zhongfangxiong
      写于 最后由 编辑
      #2

      这是 PowerShell 执行策略问题。让我帮你解决:

      执行策略是 RemoteSigned,这意味着本地脚本需要签名。让我临时设置为允许运行未签名脚本:

      现在尝试运行脚本:

      检查一下当前的执行策略:

      问题是这个文件可能来自网络(从 Git 下载),被标记为"来自外部文件"。让我解除这个标记:

      现在再试一次:

      ✅ 脚本运行成功!

      版本文件已下载完成。现在可以尝试运行 start.bat 了:

      cd X:\gitlab\loda.online\loda.framework.erp\web-api\order-api
      .\start.bat
      

      如果以后还遇到执行策略问题

      可以使用以下命令临时绕过:

      # 方法1:临时为当前进程设置执行策略
      Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
      
      # 方法2:直接用 PowerShell 运行
      powershell -ExecutionPolicy Bypass -File .\getversionfiles.ps1
      
      # 方法3:解除文件的网络标记(已使用)
      Get-Item .\script.ps1 | Unblock-File
      

      现在版本文件已就绪,IIS Express 环境变量已设置,可以正常调试 order-api 了!

      1 条回复 最后回复
      0
      回复
      • 在新帖中回复
      登录后回复
      • 从旧到新
      • 从新到旧
      • 最多赞同


      • 登录

      • 登录或注册以进行搜索。
      • 第一个帖子
        最后一个帖子
      0
      • 版块
      • 最新
      • 标签
      • 热门
      • 世界
      • 用户
      • 群组