Powershell-获取系统代理

Powershell-获取系统代理

如何使用 Powershell 获取 Windows 系统代理?

我知道

$webproxy = (get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').ProxyServer

有没有更通用的东西,或者那是最好的吗?

答案1

恐怕我找不到比这更好的办法了。

它直接进入设置并且访问注册表非常高效。

答案2

遗憾的是,微软没有“开箱即用”地使用给定目标的代理的功能。

目前,您需要手动检查 HKLM 和 HKCU 中的代理设置,在 ..\Software\Microsoft\Windows\CurrentVersion\Internet Settings 中查找,如果 ProxyEnable=1,则解析 ProxyServers 列表以查找第一个支持正确协议 (ALL、HTTP、HTTPS...) 的 ProxyServers。然后,您需要检查是否应该通过 ProxyOverride 绕过特定目的地的代理(还需要检查本地内联网设置和所有列出的目标域,以防代理跳过内联网地址)。

最后,不要忘记解析 PAC 文件的 AutoProxy 设置,或者是否通过 AD 或 DHCP 启用了 WPAD 协议。更不用说提示任何所需的代理凭据。这是一个可怕的长代码,只是为了获得单个目标的正确代理......但这样它就会起作用。

答案3

dotnet WebClient 和 WebRequest 类都公开了执行您所描述的操作的代理对象。并且鉴于其 PowerShell,您可以直接使用它们。例如:

[System.Net.WebRequest]::DefaultWebProxy.GetProxy("https://superuser.com")

...为您提供该站点当前配置的所有可解析的代理设置(来自 PAC 文件),包括代理绕过。

(我知道,通灵术等等...但这个答案在 2014 年也有效)

相关内容