如何处理 Windows PowerShell 无法执行脚本?
2020-02-04 本文已影响0人
婆娘漂亮生活安逸
这是我 2020 的第一篇文章,在此之前我多说几句,希望早日战“疫”成功,中国加油!大家出门一定要带好口罩,安全第一!!!
1. 什么是PowerShell ?
我简单理解为运行脚本的环境吧。
有兴趣可以看看《Windows PowerShell是啥?》
安装过程可以参考《Powershell 安装》
2. 问题描述:
在我的项目里我想使用 yarn 命令进行装包,发现竟然出现了以下问题?
一直装包都是这样的呀,咋出现这个问题咧,秉着“遇问题不慌不忙不躲避”
原则,我来仔细研究研究讲着啥?
3. 出现原因:
根据报错显示,我们知道这和 Power Shell 的 execute policy
相关,可以参考官方文档《Set-ExecutionPolicy》详细了解。
4. 命令:
1. 查看执行策略:Get-ExecutionPolicy
- 运行:
-
返回:
执行策略 | 解释 |
---|---|
AllSigned | 可以执行有数字签名(可信任的出版商)的脚本和配置文件,包括本地脚本。 |
Bypass | 执行脚本无任何阻拦和警告。 |
Default | 默认,windows 客户端为 ‘Restricted’,windows 服务器端为‘RemoteSigned’ |
RemoteSigned | 执行从 Internet 上下载的可信任出版商的脚本和配置文件。是 windows 服务器默认执行策略。 |
Restricted | 不加载配置文件和运行脚本。是window 客户端的默认执行策略。 |
Undefined | 未设置执行策略的范围。 |
Unrestricted | 从PowerShell 6.0 中,这是默认的执行策略。可以加载任何配置文件和脚本。如果加载未受信任的文件,需要允许后才能运行。 |
很明显,在我的电脑中执行策略为 AllSigned,所以没有办法运行从网络上下载的命令。将其更改为 RemoteSigned。
2. 设置执行策略:Set-ExecutionPolicy RemoteSigned
- 运行:
- 返回:
根据提示,直接选择了 y
按理说到这里,应该结束,并且可以运行脚本了,但是根据我的运行结果,我发现这边还是没有修改成功。
3. 查看执行策略列表:Get-ExecutionPolicy -list
- 运行:
发现了,CurrentUser 的执行策略没有修改掉。
4. 具体设置某个scope 的执行策略: Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- 运行: