当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 PowerShell 中获取代理设置 [3 种方法]

作者:精品下载站 日期:2024-12-14 05:31:45 浏览:14 分类:玩电脑

在 PowerShell 中获取代理设置 [3 种方法]


[玩转系统] 在 PowerShell 中获取代理设置 [3 种方法]

一、简介

在通过代理控制互联网访问的环境中,PowerShell 脚本通常需要了解这些设置才能正常运行。本文将指导您通过不同的方法使用 PowerShell 获取代理设置,重点关注代理地址、端口及其运行状态。

2.使用Net.WebProxy类

.NET Framework 中的 Net.WebProxy 类是获取系统默认代理设置的直接方法。

使用 Net.WebProxy 类:

$proxy = [System.Net.WebProxy]::GetDefaultProxy()
"Address: " + $proxy.Address
"Bypass On Local: " + $proxy.BypassProxyOnLocal

这里,
[System.Net.WebProxy]::GetDefaultProxy():检索默认代理设置。
$proxy.Address:显示代理服务器的 URI。
$proxy.BypassProxyOnLocal:指示本地地址是否绕过代理。

通过 Net.WebProxy 获取的设置和信息与使用 .NET 框架的应用程序相关。它们可能不反映非 .NET 应用程序或服务使用的代理配置。

3. 使用netsh命令

netsh(网络外壳)是 Windows 中的命令行工具,用于与不同的网络相关设置进行通信。

让我们使用 netsh 命令来获取代理设置:

使用netsh命令:

netsh winhttp show proxy

输出 :

Current WinHTTP proxy settings:
    Proxy Server(s) : 10.0.0.21:8080
    Bypass List     : (none)

在 Windows 计算机上,上述命令对于检查当前代理设置非常有用,并且有利于验证代理设置和排除网络连接故障。

winhttp 指定了 netsh 的上下文,这表明我们希望使用 Windows HTTP 服务设置(WinHTTP 设置)。 show proxyWinHTTP 上下文中的特定命令,它显示 PowerShell 控制台上的当前代理设置。

执行此命令后,我们获得了当前的代理服务器、端口号以及已配置的任何旁路列表(请参阅上面的输出)。

请务必注意,netsh winhttp show proxy 不会显示在用户的网络浏览器(例如 Internet Explorer、Chrome 或 Firefox)中为用户配置的代理设置。这些设置是特定于用户的,并且与 WinHTTP 设置分开存储。

4. 访问 Internet Explorer 代理设置

访问 Internet Explorer 代理设置涉及查询 Windows 注册表以找出专门为 Internet Explorer (IE) 设置的代理配置。此方法基于以下事实:许多 Windows 应用程序(包括一些较旧或遗留系统)使用 Internet Explorer 中定义的代理设置。

使用 Get-ItemProperty Cmdlet:

Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" | 
Select ProxyEnable, ProxyServer

输出 :

ProxyEnable         ProxyServer
-----------         -----------
         1          10.0.0.21:8080

上面的代码从 Windows 注册表获取代理设置。如何?在此示例中,我们使用 Get-ItemProperty cmdlet 来获取指定项目的属性。在我们的例子中,它是使用 -Path 参数指定的注册表项。

在注册表项路径中,HKCU 表示 Windows 注册表中的 HKEY_CURRENT_USER 配置单元。此注册表项包含Internet 设置,特别是当前用户的代理设置。我们将 Get-ItemProperty cmdlet 的输出通过管道传输到 Select cmdlet,以选择 ProxyEnableProxyServer 属性相应的值。

ProxyEnable 显示代理的状态,无论其是否启用。如果ProxyEnable属性的值为1,则表示代理已启用。而此属性的值 0 表示代理未启用。 ProxyServer 属性包含与代理服务器相关的详细信息,如 Server_IP:Port

Select cmdlet 是 PowerShell 中 Select-Object cmdlet 的别名。

5.使用WebRequest类

此方法涉及创建 Web 请求以使用 WebRequest 类提取代理设置

使用 WebRequest 类:

$request = [System.Net.WebRequest]::Create("http://www.example.com")
$proxy = $request.Proxy
if ($null -ne $proxy) {
    "Proxy URI: " + $proxy.GetProxy($request.RequestUri).ToString()
} else {
    "No proxy"
}

WebRequest:为特定 URL 创建一个对象。
$request.Proxy:检索此请求使用的代理。
GetProxy( $request.RequestUri).ToString():输出代理的URI。

6. 使用 Windows 设置

导航至Windows 设置 > 网络和 Internet > 代理并查看有关代理服务器的详细信息;检查以下屏幕截图。

[玩转系统] 在 PowerShell 中获取代理设置 [3 种方法]

我们还可以在Google地址栏中使用chrome://net-internals/#proxy,然后点击Enter。

七、结论

我们探索了四种在 PowerShell 中获取代理设置的方法,以满足各种网络配置和要求。

这些方法的范围从使用 .NET Framework 类、查询 Windows 注册表到执行 netsh 等系统命令。每种技术都提供了可靠的方法来确保 PowerShell 脚本可以在网络环境中正确识别和利用代理设置。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯