无法加载文件 D:\code\node\node_global\create-react-app.ps1,因为在此系统上禁止运行脚本。有关详细信息
,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
当我们在 windows上 -g (全局)安装一个js库时,执行会报这个错误,然后我们看到官方也指出了解决问题的方法:
https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies
大家可以直接看官网,想快速解决问题,可以往下继续看
先直接上解决方法
更改执行策略为当前用户
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
想知道为什么这么解决看下面
简短说明
介绍 PowerShell 执行策略并说明如何管理它们。
长说明
PowerShell 执行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶意脚本的执行。
在 Windows 计算机上,可以为本地计算机、当前用户或特定会话设置执行策略。 还可使用组策略设置为计算机和用户设置执行策略。
本地计算机和当前用户的执行策略存储在注册表中。 无需在 PowerShell 配置文件中设置执行策略。 特定会话的执行策略仅存储在内存中,在会话关闭时丢失。
执行策略不是限制用户操作的安全系统。 例如,当用户无法运行脚本时,可以在命令行中键入脚本内容,从而轻松绕过策略。 相反,执行策略可帮助用户设置基本规则,并防止他们无意中违反这些规则。
在非 Windows 计算机上,默认执行策略是 Unrestricted 且无法更改。 Set-ExecutionPolicy cmdlet 可用,但 PowerShell 会显示不支持的控制台消息。 虽然 Get-ExecutionPolicy 在非 Windows 平台上返回 Unrestricted,但该行为实际上与 Bypass 匹配,因为这些平台未实施 Windows 安全区域。
执行策略作用域
可以设置仅在特定作用域内有效的执行策略。
Scope 的有效值为 MachinePolicy、UserPolicy、Process、CurrentUser 和 LocalMachine。 设置执行策略时,LocalMachine 是默认值。
Scope 值按优先顺序列出。 优先的策略在当前会话中有效,即使在较低优先级设置了更严格的策略。
MachinePolicy
通过组策略为计算机的所有用户设置。
UserPolicy
通过组策略为计算机的当前用户设置。
Process
Process 作用域仅影响当前的 PowerShell 会话。 执行策略保存在环境变量 $env:PSExecutionPolicyPreference 中,而不是注册表中。 关闭 PowerShell 会话时,将删除变量和值。
CurrentUser
执行策略仅影响当前用户。 它存储在 HKEY_CURRENT_USER 注册表子项中。
LocalMachine
执行策略会影响当前计算机上的所有用户。 它存储在 HKEY_LOCAL_MACHINE 注册表子项中。
使用 PowerShell 管理执行策略
若要获取影响当前会话的所有执行策略,并按优先级顺序显示它们,请执行以下操作:
Get-ExecutionPolicy -List
在这种情况下,显示没有 有效的执行策略,因为当前用户的执行策略优先于本地计算机设置的执行策略。
若要为特定作用域设置执行策略,请使用 Get-ExecutionPolicy 的 Scope参数。
例如,以下命令获取 CurrentUser 作用域的执行策略:
Get-ExecutionPolicy -Scope CurrentUser
更改执行策略
若要更改 Windows 计算机上的 PowerShell 执行策略,请使用 Set-ExecutionPolicy cmdlet。 更改立即生效。 无需重启 PowerShell。
如果为 LocalMachine 或 CurrentUser 作用域设置执行策略,则更改将保存在注册表中并保持有效,直到再次更改为止。
如果为 Process 作用域设置执行策略,它不会保存在注册表中。 执行策略将保留到当前进程和任何子进程关闭为止。
若要更改执行策略,请执行以下操作:
PowerShell
Set-ExecutionPolicy -ExecutionPolicy
例如:
PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
若要在特定作用域内设置执行策略,请执行以下操作:
PowerShell
Set-ExecutionPolicy -ExecutionPolicy -Scope
例如:
PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
更改执行策略的命令可能会成功,但仍然不会更改有效的执行策略。
例如,为本地计算机设置执行策略的命令可能会成功,但会被当前用户的执行策略覆盖。
删除执行策略
若要删除特定作用域的执行策略,请将执行策略设置为 Undefined。
例如,若要删除本地计算机所有用户的执行策略:
PowerShell
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine
若要删除 Scope 的执行策略,请执行以下操作:
PowerShell
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
如果未在任何作用域内设置执行策略,则有效的执行策略为 Restricted,这是 Windows 客户端的默认执行策略。
像上面这样,我这边就可以了,不过其实像 RemoteSigned 是什么意思,我还不太清楚,大家有知道的可以留言指出,多谢