我目前正在将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 月尝试过这个:
因此,安装和运行巧克力需要三个步骤:
-
您需要从以下位置手动下载安装文件:
https://chocolatey.org/install.ps1
-
您需要:一个。 编辑 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.
- 您必须调用 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"
- 如果您在有管理员条款的情况下运行它,一切都会正常工作
之后,您将需要执行以下操作:
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代码的独创性