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



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

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

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

PS C:Windowssystem32> 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%NuGetNuGet.Config

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

但是,当Powershell脚本脚本调用$webclient = new-object System.Net.WebClient时,此对象的代理元素不返回任何内容:

PS C:Windowssystem32> $webclient = new-object System.Net.WebClient
PS C:Windowssystem32> $webclient.Proxy
Credentials
-----------

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

有没有人有其他想法/解决方案可以尝试?

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

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

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

先运行这个

choco config set proxy http://proxy_host:proxy_port

>我在 2018 年 11 月尝试过这个:

因此,安装和运行巧克力需要三个步骤:

  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或命令行调用它。

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

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

调用以下内容:

C:\WINDOWS\system32> @"%SystemRoot%System32WindowsPowerShellv1.0powershell.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%chocolateybin"

  1. 如果您在有管理员条款的情况下运行它,一切都会正常工作

之后,您将需要执行以下操作:

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

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

请按照下面的此链接解决此问题。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%chocolateybin

只需将上述代码复制并粘贴到您以管理员身份运行的CMD中即可。仅此而已。感谢Duane Newman代码的独创性

最新更新