有人可以告诉我这些安装 Chocolatey 的 PowerShell 脚本是否安全吗?

Can someone please tell me whether these PowerShell scripts to install Chocolatey is safe?

我需要安装 Chocolatey,一个 Windows 包管理器。在他们的网站上,我找到了这个必须执行才能安装的 powershell 脚本。但是,我不明白这个脚本。

我需要知道的是这个脚本是否安全。

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

让我怀疑的说法是Set-ExecutionPolicy Bypass -Scope Process -Force;[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072;

要执行的远程powershell脚本是this.

如果有人能告诉我这些脚本是否安全,那就太好了...

让我们逐行看看发生了什么。

Set-ExecutionPolicy Bypass -Scope Process -Force;

默认情况下 Powershell 没有 运行 脚本文件。这是为了防止意外执行脚本,是一种安全措施。由于范围是进程,它只影响当前会话,而不是系统范围的更改。有关详细信息,请参阅 Set-ExecutionPolicy

[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; 

这里所做的是对 TLS 设置的更改。 -bor 3072 表示标志的组合,记录为 SecurityProtocolType 枚举 并且特定标志启用 TLS 1.2 支持。

iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

最后一个先用WebClient下载一个Powershell脚本文件,iex执行

代码合理吗?好吧,关于启用 TLS 1.2 的部分是,因为旧版本的 TLS 已被弃用,旧的 Powershell 默认为那些。现代网络服务器不允许此类连接,因此如果不更改 TLS 版本,下载尝试就会失败。执行策略设置也是如此,如果您要运行一个脚本,则需要更宽松的执行策略。

至于install.ps1,谁能说说?如果您信任发布者,这是您的决定。