【避坑】PowerShell:因为在此系统上禁止运行脚本 附原因和解决办法

现象:

用powershell作为命令行工具,尝试使用thinkjs,安装完think-cli后检测运行版本(thinkjs -V)时,遇到了以后问题:

快速解决:

通过管理员模式打开powershell,然后输入: ```set-executionpolicy RemoteSigned``` 然后输入A全是,等待运行即可。 (不需要深入了解到此为止,不用看下文)

原因:

当前powershell执行策略无法运行脚本 powershell有四种执行策略: - Restricted 禁止运行任何脚本和配置文件(默认) - AllSigned 可以运行脚本,但要求所有脚本和配置文件由可信发布者签名,包括在本地计算机上编写的脚本 - RemoteSigned 可运行脚本,但要求从网络上下载的脚本和配置文件由可信发布者签名;不要求对已经运行和本地计算机编写的脚本进行数字签名 - Unrestricted 可以运行未签名的脚本

解决方案:

1.换CMD 这比较无脑,不建议,不优雅(但是可以用)。 2.更换设置系统策略 a. 查看powershell当前策略 通过 ```get-executionpolicy```可以获取当前系统策略 出现这个问题是因为系统默认执行策略为Restricted b.使用管理员模式打开powershell c.重新设置powershell策略 显然由上,我们可以看到,只需要修改策略就可以,根据描述我们可以将其修改为RemoteSigned 修改的命令是:set-executionpolicy 策略名 在这里直接调用 ```set-executionpolicy RemoteSigned```即可 d.再次检测当前策略 ```get-executionpolicy``` 可见已经被修改,可以继续之前的操作了。