完整的报错描述是这样的:
cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1 其大概意思就是无法加载*.ps1 文件,因为在此系统上禁止运行脚本。
我是执行ng serve 的时候报这个问题的,当然有可能其他指令也会触发该问题,其根本原因是因为 系统中脚本执行策略是严格模式,权限不够。因此即便是系统中已经安装了npm,cnpm等等,在使用其指令的时候仍然会报错。
解决方式:
1.进入到 Window PoweShell
2.输入 Set-ExecutionPolicy RemoteSigned 回车
3.按Y 然后回车 即可解决问题
归纳一下Policy 的参数:
首先PowerShell执行策略是一个安全功能,用来控制加载配置文件和运行脚本的前提条件,其主要目的就是防止恶意脚本的执行。而这个执行策略我们可以根据自身需要去修改,当我们遇到无法执行的脚本时,就可以通过修改相应的脚本内容,绕过一些策略。
这里面我们将参数设置成 ‘RemoteSigned ‘,意思是远程签名,表明系统认定脚本可以运行,需要Trusted publisher(受信任的发布者)从Internet下载的脚本和配置文件进行数字签名。对于在本地计算机上编写且未从 Internet 下载的脚本,不需要数字签名。
还有一些其他的执行策略
AllSigned:
脚本可以运行,在从尚未分类为受信任或不受信任的发布者运行脚本之前,提示你
Restricted:
允许单个命令,但不允许脚本。
Unrestricted:
可以载入所有配置文件,可以运行所有脚本文件. 如果你运行一个从internet下载并且没有签名的脚本,在运行之前,会被警告。Bypass:不阻止任何操作,并且没有任何警告或提示。
Undefined:
当前作用域中未设置执行策略。