yarn : 无法加载文件 C:Users***AppDataRoaming pmyarn.ps1,因为在此系统上禁止运行脚本 PowerShell 执行策略配置教程 的解决办法

问题概述

关于这个问题,博主是在npm打包构建转到yarn打包构建时遇到的,

通过yarn打包构建项目工程时,失败:“ yarn : 无法加载文件 C:Users***AppDataRoaming pmyarn.ps1,因为在此系统上禁止运行脚本 ”

具体信息如下:

yarn : 无法加载文件 C:Users***AppDataRoaming
pmyarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ yarn
+ ~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

如下图:

解决办法

关于这个问题,PowerShell 脚本的执行有着严格的安全策略限制!只需要修改以下策略即可,

“ 管理员身份启动 ” Windows PowerShell 修改执行策略,

输入指令:set-ExecutionPolicy RemoteSigned,如下图:

再通过yarn执行打包构建项目工程就可以了!!!

关于 PowerShell

1、PowerShell管理执行策略常用指令

获取有效的执行策略,输入指令:

Get-ExecutionPolicy

获取影响当前会话的所有执行策略,并按优先顺序显示,输入指令:

Get-ExecutionPolicy -List

获取当前用户(CurrentUser)范围的执行策略,输入指令:

Get-ExecutionPolicy -Scope CurrentUser

可以看到有效的执行策略是 RemoteSigned ,因为当前用户的执行策略优先于本地计算机的执行策略集。若要获取特定范围(Scope)的执行策略集,则使用Scope参数设值。

若要更改 Windows 计算机上的 PowerShell 执行策略,请使用 Set-ExecutionPolicy,更改立即生效,无需重启 PowerShell。

更改执行策略,输入指令:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

更改在特定范围内设置执行策略,则输入指令:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

删除本地计算机所有用户的执行策略,输入指令:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

删除某个Scope的执行策略,输入指令:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

2、 PowerShell 执行策略

序号 策略名称 说明 1 Default 1、设置默认执行策略; 2、Restricted 适用于 Windows 客户端; 3、适用于 Windows 服务器的 RemoteSigned; 2 AllSigned 1、脚本可以运行; 2、要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本; 3、在从尚未分类为受信任的或不受信任的发布者运行脚本之前,会提示你; 4、运行已签名但恶意脚本的风险; 3 Bypass 1、不阻止任何操作,并且没有任何警告或提示; 2、此执行策略适用于 PowerShell 脚本内置于更大的应用程序或 PowerShell 是具有其安全模型的程序的基础的配置; 4 RemoteSigned 1、Windows 服务器计算机的默认执行策略; 2、脚本可以运行; 3、需要来自受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)的数字签名; 4、不需要对在本地计算机上编写的脚本(而不是从 Internet 下载)进行数字签名; 5、如果脚本被取消阻止,则运行从 Internet 下载且未签名的脚本,例如使用 Unblock-File cmdlet; 6、从 Internet 以外的源运行未签名脚本的风险,以及可能是恶意的签名脚本; 5 Restricted 1、Windows 客户端计算机的默认执行策略; 2、允许单个命令,但不允许脚本; 3、防止运行所有脚本文件,包括格式化和配置文件 () .ps1xml 、模块脚本文件 (.psm1) ,以及 powerShell 配置文件 (.ps1) ; 6 Undefined 1、当前范围内没有设置执行策略; 2、如果所有范围内的执行策略为 Undefined,则有效的执行策略适用于 Restricted Windows 客户端和适用于 Windows Server 的 RemoteSigned ; 7 Unrestricted 1、非 Windows 计算机的默认执行策略,无法更改; 2、未签名的脚本可以运行,存在运行恶意脚本的风险; 3、在运行不是来自本地 Intranet 区域的脚本和配置文件之前,警告用户;

参考:

【】

3、 PowerShell 执行策略范围

序号 范围名称 说明 1 MachinePolicy 为计算机的所有用户设置组策略 2 UserPolicy 为计算机的当前用户设置组策略 3 Process 范围 Process 仅影响当前的 PowerShell 会话。 执行策略保存在环境变量 $env:PSExecutionPolicyPreference中,而不是注册表。 关闭 PowerShell 会话后,将删除变量和值 4 CurrentUser 执行策略仅影响当前用户。 它存储在 HKEY_CURRENT_USER 注册表子项中 5 LocalMachine 执行策略会影响当前计算机上的所有用户。 它存储在 HKEY_LOCAL_MACHINE 注册表子项中

参考:

【】

【】

【】



作 者: 华 仔 来 源: (Chinese Software Developer Network) 原 文:
经验分享 程序员 微信小程序 职场和发展