问题现象:
使用vue创建项目时(vue create cli-demo),出现如下错误信息
原因分析:
window10系统升级后,PowerShell的执行策略(about_Execution_Policies)设置为Restricted(受限制的),导致系统无法执行脚本。
about_Execution_Policies介绍官网地址:关于执行策略 - PowerShell | Microsoft Learn
PowerShell 执行策略
这些策略仅在 Windows 平台上执行。 PowerShell 执行策略如下:
AllSigned
- 脚本可以运行。
- 要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。
- 在运行来自尚未分类为可信或不可信的发布者的脚本之前,会提示你。
- 存在运行已签名的恶意脚本的风险。
Bypass
- 不阻止任何操作,并且没有任何警告或提示。
- 此执行策略专为将 PowerShell 脚本内置到较大应用程序中的配置或以 PowerShell 为具有自己的安全模型的程序的基础的配置而设计。
Default
- 设置默认执行策略。
- Restricted(对于 Windows 客户端)。
- RemoteSigned(对于 Windows 服务器)。
RemoteSigned
- Windows 服务器计算机的默认执行策略。
- 脚本可以运行。
- 需要受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)的数字签名。
- 在本地计算机上编写且不是从 Internet 下载的脚本不需要数字签名。
- 如果脚本已解除阻止(例如通过使用
Unblock-File
cmdlet),则运行从 Internet 下载且未签名的脚本。- 存在运行来自 Internet 以外来源的未签名脚本以及可能存在恶意的签名脚本的风险。
Restricted
- Windows 客户端计算机的默认执行策略。
- 允许单个命令,但不允许脚本。
- 阻止运行所有脚本文件,包括格式和配置文件 (
.ps1xml
)、模块脚本文件 (.psm1
) 和 PowerShell 配置文件 (.ps1
)。Undefined
- 当前范围内没有设置执行策略。
- 如果所有范围内的执行策略均为 Undefined,则对于 Windows 客户端,有效执行策略为 Restricted;对于 Windows Server,有效执行策略为 RemoteSigned。
Unrestricted
- 非 Windows 计算机的默认执行策略,无法更改。
- 未签名的脚本可以运行。 存在运行恶意脚本的风险。
- 在运行非来自本地 Intranet 区域的脚本和配置文件之前警告用户。
解决方案:
更改PowerShell的执行策略
以管理员的身份运行PowerShell,执行set-ExecutionPolicy RemoteSigned
PS C:\WINDOWS\system32> get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Restricted
PS C:\WINDOWS\system32> get-ExecutionPolicy
Restricted
PS C:\WINDOWS\system32> set-ExecutionPolicy RemoteSigned
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): Y
PS C:\WINDOWS\system32> get-ExecutionPolicy
RemoteSigned
PS C:\WINDOWS\system32>