如何在 Windows 2012 R2 Core 上的代理后面安装 Chocolatey 软件包?

How do I install Chocolatey packages behind a proxy on Windows 2012 R2 Core?

我目前正在将 Chocolatey 与 Ansible 结合使用,以将多个应用程序部署到混合 Windows/Linux 环境中。

所有 Windows 机器,除了一台机器 运行 作为服务器核心安装,对于除安装了 GUI 的机器之外的所有机器,Chocolatey 不会安装任何应用程序,因为它无法安装使用代理。

我已经使用 netsh 设置了代理环境变量:

PS C:\Windows\system32> netsh winhttp show proxy

Current WinHTTP proxy settings:

Proxy Server(s) :  http://aaa.bbb.ccc.ddd:3128
Bypass List     :  <local>;localhost;127.0.0.1;172.16.*;192.168.*;*.domain.local;

也在%APPDATA%\NuGet\NuGet.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <config>
    <add key="HTTP_PROXY" value="http://aaa.bbb.ccc.ddd:3128" />
  </config>
</configuration>

然而,当 Powershell scripts 脚本调用 $webclient = new-object System.Net.WebClient 这个对象的代理元素时 returns nothing:

PS C:\Windows\system32> $webclient = new-object System.Net.WebClient
PS C:\Windows\system32> $webclient.Proxy

Credentials
-----------

我发现,如果我手动强制 functions/Get-Headers.ps1 和 functions/Get-webFiles.ps1 中的代码使用代理,那么安装会成功,但是这不是解决该问题的好方法,因为我的 Ansible 任务现在已固定为我知道该解决方法有效的特定版本的巧克力。

有没有人有其他 ideas/solutions 可以试试?

Choco 系列 0.9.9+ 完全重写,尚未实现所有内容,包括您在 IE 中设置的代理支持。

观看问题 https://github.com/chocolatey/choco/issues/243 以了解它何时再次可用。

更新:Chocolatey 现在支持代理 - 请参阅 https://github.com/chocolatey/choco/wiki/Proxy-Settings-for-Chocolatey

运行这第一个

choco config set proxy http://proxy_host:proxy_port

我在 2018 年 11 月试过这个:

所以,安装和 运行 chocolatey 需要三个步骤:

  1. 您需要去手动下载安装文件:

    https://chocolatey.org/install.ps1

  2. 您需要: 一种。编辑 ps1 文件或
    b.你的环境变量。

您需要有以下变量:

    $env:chocolateyProxyLocation = "http://USER:PASSWORD@http://USER:PASSWORD@IP_ADDRESS:PORT
    $env:chocolateyProxyUser = "USER"
    $env:chocolateyProxyPassword  =  "PASSWORD"

   THEY MUST BE AS THEY ARE ABOVE with USER:PASSWORD@PROXY_LOCATION:PORT format.
  1. 您必须调用 install.ps1 文件。 您可以从 Windows-PowerShell ISE 或从 CommandLine
  2. 调用它

你必须调用你的本地脚本!!!不是在线的,例如:

file:///E:/softwares/chocolate_install_script/install.ps1

调用以下内容:

C:\WINDOWS\system32>@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('file:///E:/softwares/chocolate_install_script/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

  1. 如果你 运行 使用管理员权限
  2. ,一切都会正常

之后,您需要做:

choco config set proxy http://USER:PASSWORD@IP_ADDRESS:PORT
choco config set proxyUser bob
choco config set proxyPassword 123Sup#rSecur3

下面这个完全解决了这个问题...

请按照下面的 link 来解决此问题。 https://duanenewman.net/blog/post/installing-chocolatey-behind-a-corporate-proxy/

但是,为了将来,这是下面的代码。

@powershell -NoProfile -ExecutionPolicy Unrestricted -Command "[Net.WebRequest]::DefaultWebProxy.Credentials = [Net.CredentialCache]::DefaultCredentials; iex ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin

只需将以上代码复制并粘贴到您 运行 作为管理员的 CMD 中。 就这样。 感谢 Duane Newman 代码的原创性