引言
今天在使用vue -v命令时发现vue命令在Powershell中直接报错(node和npm命令都没问题),如下图:
文字版:
vue : 无法加载文件 C:\Users\shinow\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:
/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ vue -v
+ ~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
于是我又打开了cmd面板想要尝试一下,发现在cmd中是可以的如下图:
思考:
当然,这对于强迫症的我不能忍,为什么cmd面板中vue命令就起作用,而Powershell不行呢?
尝试:
-
度娘上有的说“用管理员身份运行Powershell”就可以了,开干:
Win+R键打开运行面板->
然后在这个面板中敲入Powershell,然后同时按下Ctrl+Shift+Enter键,打开的就是管理员模式下的Powershell了,然后输入命令vue -v,效果如下:
发现并没有解决问题 -
后来考虑到
Powershell ExecutionPolicy
的执行策略,其实powershell对于脚本的执行有着严格的安全限制,这是我们开发人员基本都遇到过的问题。先普及一下执行策略的基本知识
Get-ExecutionPolicy -List #查看当前的执行策略
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned #设置执行策略为要求远程脚本签名,范围为当前用户策略 Policies:
Restricted / AllSigned / RemoteSigned / Unrestricted / Bypass / Undefined范围 Scopes:
Process / CurrentUser / LocalMachine设置策略#
临时使用,不想修改执行策略为较低的权限,可使用:Set-ExecutionPolicy Bypass -Scope Process -Force; npm-windows-upgrade
开发人员需频繁使用powershell脚本,允许本地脚本运行,可使用:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
开动
输入命令Get-ExecutionPolicy,查看当前状态,结果是Restricted,如下图:
果然受限制了,是不是有种灵光一闪的感觉。
话不多说,解决限制,输入命令set-ExecutionPolicy RemoteSigned,然后会出现选择,输入Y即可,如下图:
验证
最验证一下是否成功,在命令行继续输入vue -v,如下图:
问题解决!欢迎观看!