抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

使用终端时遇到问题“在此系统上禁止运行脚本或未对文件数字签名而不能运行脚本”。

问题详述

书接上回,长时间未使用过hexo,且曾对电脑安装内容进行过数次大幅改动,在检查hexo是否完整时发生如图所示在此系统上禁止运行脚本错误。

在此系统上禁止运行脚本

问题分析

既然给出了参阅网址,那我们就去看一看。网址写的还是很详尽的。

获取有效的执行策略、获取影响当前会话的所有执行策略

如上图。我们尝试获取有效的执行策略,返回为“Restricted”,意为“阻止运行所有脚本文件”。但我们获取影响当前会话的所有执行策略时,返回均为“Undefined”,意为“当前范围内没有设置执行策略”。

这看起来不对,因为这样的话我们获取当前 PowerShell 会话的有效执行策略(在这个具体问题中,即UserPolicy)时返回的也应该是“Undefined”。

对于这个问题参阅网址上也已经写明:如果所有范围内的执行策略均为 Undefined,则对于 Windows 客户端,有效执行策略为 Restricted;对于 Windows Server,有效执行策略为 RemoteSigned。我的环境显然属于前者。

Restricted和Undefined执行策略描述

问题解决

根据参阅网址的提示,我输入了更改执行策略的命令:

Set-ExecutionPolicy -ExecutionPolicy AllSigned

之后重新输入我原来需要的命令hexo -v,此时的报错提示发生了变化:未对文件数字签名而不能运行脚本。这是由于AllSigned策略只允许运行带有数字签名的脚本。

AllSigned策略描述

虽然不知道为什么我的hexo脚本没有数字签名,但我相信它是清白的(这一点很重要!)。于是我将策略改为了Bypass:

Set-ExecutionPolicy -ExecutionPolicy Bypass

Bypass策略描述

问题解决:

问题解决图示

评论

评论区不是无人区喵