S.R*_*jit 8 powershell node.js firebase google-cloud-functions
我正在使用 Firebase 设置一个新项目,运行命令后firebase init functions,出现以下错误。
firebase : File C:\Users\fudge\AppData\Roaming\npm\firebase.ps1 cannot be loaded. The file C:\Users\fudge\AppData\Roaming\npm\firebase.ps1 is not digitally signed.
You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ firebase init functions
+ ~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
Run Code Online (Sandbox Code Playgroud)
我知道我可以跑
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
Run Code Online (Sandbox Code Playgroud)
允许它运行,但这似乎很危险,因为我想如果我的电脑有恶意脚本,我也会允许恶意脚本运行。是否有任何原因导致 Firebase 包未进行数字签名并且是否可以在firebase不更改执行策略的情况下使用?
在 init 命令之前我只使用了这三个命令,使用的是 Node v12.14.0:
npm init
npm install firebase-functions@latest firebase-admin@latest --save
npm install -g firebase-tools
Run Code Online (Sandbox Code Playgroud)
您将遇到许多未签名的脚本。只有作者才能回答:
Firebase 包未进行数字签名是否有任何原因
...这对于您遇到的任何未签名的脚本都是如此。话虽如此,没有什么可以阻止您签署来自其他任何人的任何脚本(如果不是的话)。然而,这是你的选择。
根据您运行的 PowerShell 版本,在默认安装、操作系统级别配置中,ExecutionPolicy 设置为受设计限制。
这根本不会阻止您运行脚本,因为您可以将脚本加载到 ISE 并按 F8,它将运行。firebase 脚本可能会在命令提示符下运行。
您可以将整个脚本复制并粘贴到控制台主机中,一旦您按 Enter 键,它也会运行。
当然,这不是运行脚本的自动化方式。
当前 ExecutionPolicy 设置默认设置为 RemoteSigned,因此本地脚本可以运行,所有其他脚本必须经过签名才能运行。
有多种方法可以允许 PowerShell 脚本运行,而无需更改主机操作系统 ExecutionPolicy 设置。在大多数企业中,此设置是通过 GPO 进行和实施的。如果这是你的情况,无论现在还是将来,那么你无论如何都无法改变它。
PowerShell ExecutionPolicy 有一个范围,您可以使用其中任何一个在用户上下文甚至进程上下文中运行脚本,并且给定的 ExecutionPolicy 仅在运行期间有效。
根据帮助文件:
执行策略范围 您可以设置仅在特定范围内有效的执行策略。
范围的有效值为:
MachinePolicy、UserPolicy、Process、CurrentUser 和 LocalMachine。
设置执行策略时,LocalMachine 是默认值。
范围值按优先顺序列出。优先的策略在当前会话中有效,即使在较低优先级设置了更严格的策略。
有关更多信息,请参阅设置执行策略。
MachinePolicy 由组策略为计算机的所有用户设置。
UserPolicy 由计算机当前用户的组策略设置。
过程
进程范围仅影响当前的 PowerShell 会话。
执行策略保存在环境变量 $env:PSExecutionPolicyPreference 中,而不是注册表中。当 PowerShell 会话关闭时,变量和值将被删除。
当前用户
执行策略仅影响当前用户。它存储在 HKEY_CURRENT_USER 注册表子项中。
LocalMachine 执行策略影响当前计算机上的所有用户。它存储在 HKEY_LOCAL_MACHINE 注册表子项中。
有多种方法可以绕过限制性执行策略,如下所示:
您将默认 OS ExecutionPolicy 设置为 Unrestricted 的担忧是谨慎的。不,根据上面的说法,没有理由这样设置。设置每个会话或用户的 ExecutionPolicy。
| 归档时间: |
|
| 查看次数: |
9188 次 |
| 最近记录: |