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

    PowerShell
    1 2 16 1

    Z
    35
    0

    报错

    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 默认的执行策略是 RestrictedAllSigned,这会阻止你运行 .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 更适合你。

  • Z
    35
    0

    这是 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 了!