【发布时间】:2016-05-20 03:22:33
【问题描述】:
我们目前在 Azure 中利用 VNet,该 VNet 配置为强制所有流量通过我们的站点到站点连接到本地网络,然后通过我们的公司防火墙传出。所有 HTTP/HTTPS 流量都经过代理。
这会导致重大问题,因为新配置的 VM 无法看到外部世界以访问必要的配置项,例如 Azure 扩展,甚至没有代理的内部 IP。
迄今为止,我已经通过 PowerShell 创建了一个不正当的解决方法,我在其中配置 VM,使用覆盖代理设置的 Chef 引导它,以便访问 Chef 服务器,然后配置代理。
但是,在用户启动 Internet Explorer 之前,它不会设置代理以便它们可以在 PowerShell 中使用。具体来说,在 IE 启动之前,[System.Net.GlobalProxySelection]::Select 为空。一旦 IE 启动,它就会被填充。
我也尝试过预配置映像并对其进行 sysprep,但 sysprep 会擦除代理设置。
作为最后一步,我创建了一个我认为可以设置代理的 PowerShell 脚本。我打算通过 Azure Script Extension 使用这个脚本(假设默认情况下它在 VM 上),但我无法让它给我想要的结果。
所以,我的问题是,如何让 Windows 2012 R2(和 Windows 2008 R2)新配置的 VM 代理感知,以便配置序列中的其他进程能够工作(即,像 Chef 扩展这样的扩展)?
这是我创建的脚本(未按预期执行):
# See: http://www.geoffchappell.com/notes/windows/ie/firstrun.htm
$regKey = 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings'
$proxyServerToDefine = 'http://<PROXY URI>:<PORT>'
Set-ItemProperty -path $regKey ProxyEnable -value 1
Set-ItemProperty -path $regKey ProxyServer -value $proxyServerToDefine
Set-ItemProperty -path $regKey ProxyOverride -value '137.185.235.196;137.185.235.199'
New-Item -Path 'HKLM:\\Software\\Policies\\Microsoft\\Internet Explorer' -Name 'Main' -Force # Does not exist by default
Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Internet Explorer\Main' -Name DisableFirstRunCustomize -Value 1
(New-Object System.Net.WebClient).Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
【问题讨论】:
-
这应该发布到 ServerFault,而不是 StackOverflow。
-
同意这是一个服务器故障问题,但这是您的解决方法:blogs.msdn.microsoft.com/mast/2015/12/01/…
-
实际上,Simon,我不认为这是解决此问题的方法。解决方法是分配网络路由,而不是代理。
标签: powershell azure proxy