使用终端时遇到问题“在此系统上禁止运行脚本或未对文件数字签名而不能运行脚本”。
问题详述
书接上回,长时间未使用过hexo,且曾对电脑安装内容进行过数次大幅改动,在检查hexo是否完整时发生如图所示在此系统上禁止运行脚本错误。
问题分析
既然给出了参阅网址,那我们就去看一看。网址写的还是很详尽的。
如上图。我们尝试获取有效的执行策略,返回为“Restricted”,意为“阻止运行所有脚本文件”。但我们获取影响当前会话的所有执行策略时,返回均为“Undefined”,意为“当前范围内没有设置执行策略”。
这看起来不对,因为这样的话我们获取当前 PowerShell 会话的有效执行策略(在这个具体问题中,即UserPolicy)时返回的也应该是“Undefined”。
对于这个问题参阅网址上也已经写明:如果所有范围内的执行策略均为 Undefined,则对于 Windows 客户端,有效执行策略为 Restricted;对于 Windows Server,有效执行策略为 RemoteSigned。我的环境显然属于前者。
问题解决
根据参阅网址的提示,我输入了更改执行策略的命令:
Set-ExecutionPolicy -ExecutionPolicy AllSigned
之后重新输入我原来需要的命令hexo -v,此时的报错提示发生了变化:未对文件数字签名而不能运行脚本。这是由于AllSigned策略只允许运行带有数字签名的脚本。
虽然不知道为什么我的hexo脚本没有数字签名,但我相信它是清白的(这一点很重要!)。于是我将策略改为了Bypass:
Set-ExecutionPolicy -ExecutionPolicy Bypass
问题解决: