PowerShell 的执行策略(Execution Policy)阻止了未签名脚本的运行
PowerShell
2
帖子
1
发布者
16
浏览
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.ps1Kimi的专业解答
这个错误提示是因为 PowerShell 的执行策略(Execution Policy)阻止了未签名脚本的运行。Windows 默认的执行策略是
Restricted或AllSigned,这会阻止你运行.ps1脚本,尤其是没有数字签名的脚本。解决方法(任选其一):
方法 1:临时绕过执行策略(推荐用于开发/测试)在 PowerShell 中运行以下命令,仅对当前会话有效,关闭窗口后失效:
powershell -ExecutionPolicy Bypass -File .\getversionfiles.ps1
方法 2:更改当前用户的执行策略(永久生效)允许当前用户运行本地脚本,不需要签名:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedRemoteSigned:本地脚本无需签名,远程脚本必须签名。- 系统会提示你确认,输入
Y回车即可。
️ 方法 3:更改全局执行策略(不推荐)如果你确实需要全局更改(对所有用户生效),请以管理员身份运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
查看当前执行策略你可以先查看当前的执行策略:
Get-ExecutionPolicy -List
总结方法 是否推荐 是否永久 Bypass临时运行
推荐
临时RemoteSigned当前用户
推荐
永久全局更改
️ 不推荐
永久
如果你只是临时运行脚本,方法 1 是最安全快捷的。
如果你经常运行本地脚本,方法 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 了!