windows 下无法加载文件 xxx.ps1,因为在此系统上禁止运行脚本

来源:本站原创 点击数: 发布时间:2025年09月25日

这个错误信息:

“无法加载文件 xxx.ps1,因为在此系统上禁止运行脚本”

是 PowerShell 的 执行策略(Execution Policy) 限制导致的。
系统为了安全,默认禁止执行 .ps1 脚本。


一、错误原因

PowerShell 有一层安全机制叫 执行策略 (Execution Policy)
它控制脚本是否能被运行。

默认情况下,

  • Windows 上一般是:Restricted(禁止运行任何脚本)


二、查看当前执行策略

打开 PowerShell(建议用管理员身份):

Get-ExecutionPolicy

可能输出:

Restricted

表示禁止执行。


 三、解决方案(推荐安全方式)

方式 1:仅在当前 PowerShell 会话中放宽限制(推荐)

这不会改变系统设置,仅本次窗口有效:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

然后再执行你的脚本:

.\xxx.ps1

关闭窗口后,安全策略会恢复默认。


方式 2:为当前用户永久放宽权限

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

解释:

  • RemoteSigned 表示:

    • 本地脚本可直接执行;

    • 从网络下载的脚本需有数字签名;

    • 安全性和实用性较平衡。


方式 3:管理员全局放宽(不推荐)

Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned

这会影响所有用户,不建议随意修改。


四、常见执行策略说明

策略说明
Restricted禁止运行所有脚本(默认)
AllSigned仅允许签名脚本
RemoteSigned本地脚本可执行,下载的需签名(推荐)
Unrestricted可执行所有脚本,会有风险提示
Bypass完全不限制(仅适合临时调试)

五、快速临时执行(无需修改策略)

如果你只想执行一次某个脚本,也可以直接用:

powershell -ExecutionPolicy Bypass -File "C:\path\xxx.ps1"

这样不会修改系统设置。


总结

目的命令
临时放开当前会话Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
永久放开当前用户Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
仅执行一次脚本powershell -ExecutionPolicy Bypass -File .\xxx.ps1