安装Sanity CLI运行命令提示ps1脚本未数字签名报错如何修复
问题原因
Windows PowerShell默认启用脚本执行安全策略,会拦截没有可信数字签名的本地.ps1格式脚本运行。全局安装@sanity/cli时npm自动生成的sanity.ps1启动脚本无数字签名,因此触发未授权访问的安全报错。
修复方案
按优先级从高到低可选以下方案:
方案1:当前会话临时绕过(安全无永久修改,推荐首次使用的用户选这个)
- 在你当前执行命令的PowerShell窗口中运行:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass- 弹出确认提示时输入
Y回车确认,该配置仅对当前打开的PowerShell窗口生效,关闭窗口后自动恢复默认安全策略,不会修改系统全局配置。 - 重新执行Sanity初始化命令即可正常运行:
sanity init --coupon javascriptmastery2022方案2:修改当前用户执行策略(一劳永逸,适合经常使用npm全局工具的开发者)
- 打开任意PowerShell窗口,运行:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned- 弹出确认提示时输入
Y回车确认。该策略规则为:本地生成的脚本可直接运行,从网络下载的脚本需持有可信发布者数字签名才可运行,兼顾使用便利性和系统安全性,配置完成后后续所有全局npm命令都不会再触发同类签名报错。 - 直接运行Sanity初始化命令即可。
方案3:不改配置直接绕过PowerShell脚本调用
不想修改任何执行策略的话,可以直接调用npm生成的cmd格式启动文件,跳过ps1脚本的签名校验,直接运行命令:sanity.cmd init --coupon javascriptmastery2022
安全提示:不要将执行策略设置为
Unrestricted级别,该级别会允许所有未签名脚本运行,存在恶意脚本被自动执行的安全风险,日常使用RemoteSigned级别即可满足开发需求。
内容的提问来源于stack exchange,提问作者Ronen Amir
相关产品推荐
相关产品推荐

