Windows系统禁止运行PowerShell脚本解决办法
问题
这几天着手将之前的基于Hugo做的博客迁移到Hexo过来,需要安装Node.js相关。
系统上之前有node.js,是通过nvm安装的,只是版本有点低,所以升级看看,但升级问题就来了,系统提示:
1 | 无法加载文件 \*\*.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。 |
一下就感觉不爽了!怎么就不行了呃,以前都可以的!(好像是2年前了 ~:> )
既然遇到了,那就解决吧!
解决办法
在Windows搜索栏中输入powershell
然后以管理员身份运行,如上图。
接着输入命令:
1 | get-executionpolicy |
通过命令看到,这里是 Restricted。
然后我们把它改了,输入如下命令。
1 | set-executionpolicy remotesigned |
系统提示多个选项,我们选择输入Y,然后回车。
这样,上边的问题就解决了!!
原因
Windows系统考虑安全因素,对Powershell
脚本的执行进行了策略控制,这里默认就是Restricted。
脚本执行策略有七种:
AllSigned
- 脚本可以运行。
- 要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。
- 从尚未分类为受信任或不受信任的发布者运行脚本之前,会提示你。
- 运行已签名但恶意脚本的风险。
Bypass
- 不阻止任何操作,并且没有任何警告或提示。
- 此执行策略适用于 PowerShell 脚本内置于较大应用程序的配置,或针对 PowerShell 是具有自身安全模型的程序基础的配置。
Default
- 设置默认执行策略。
- Restricted 适用于 Windows 客户端的 。
- 适用于 Windows 服务器的 RemoteSigned。
RemoteSigned
- Windows Server 计算机的默认执行策略。
- 脚本可以运行。
- 需要受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)的数字签名。
- 不需要在本地计算机上编写且未从 Internet 下载的脚本上使用数字签名。
- 如果未阻止脚本(例如使用 cmdlet),则运行从 Internet 下载且未签名的
Unblock-File
脚本。 - 运行来自 Internet 以外的源的未签名脚本以及可能是恶意的已签名脚本的风险。
Restricted
- Windows 客户端计算机的默认执行策略。
- 允许单个命令,但不允许脚本。
- 阻止运行所有脚本文件,包括格式化和配置文件 (
.ps1xml
) 、模块脚本文件 (.psm1
) ,以及 PowerShell 配置文件 (.ps1
) 。
Undefined
- 当前范围内没有设置执行策略。
- 如果所有范围内的执行策略都是 Undefined,则有效的执行策略 Restricted 适用于 Windows 客户端, RemoteSigned 适用于 Windows Server。
Unrestricted
- 非 Windows 计算机的默认执行策略,无法更改。
- 未签名的脚本可以运行。 存在运行恶意脚本的风险。
- 在运行不来自本地 Intranet 区域的脚本和配置文件之前警告用户。
参考文档:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jona's Blog!