PowerShell'de Proxy Ayarlarını Alma [3 Yol]


1. Giriş

İnternet erişiminin bir proxy aracılığıyla kontrol edildiği ortamlarda, PowerShell komut dosyalarının düzgün çalışması için genellikle bu ayarların farkında olması gerekir. Bu makale, proxy adresine, bağlantı noktasına ve çalışma durumuna odaklanarak PowerShell kullanarak proxy ayarlarını almanın farklı yöntemleri konusunda size yol gösterecektir.

2. Net.WebProxy Sınıfını Kullanma

.NET Framework'teki Net.WebProxy sınıfı, sistemin varsayılan proxy ayarlarını elde etmek için basit bir yaklaşımdır.

Net.WebProxy Sınıfını Kullanma:

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

Burada,
[System.Net.WebProxy]::GetDefaultProxy(): Varsayılan proxy ayarlarını alır.
$proxy.Address: Gösterir proxy sunucusunun URI'si.
$proxy.BypassProxyOnLocal: Yerel adreslerin proxy'yi atlayıp atlamadığını gösterir.

Net.WebProxy aracılığıyla elde edilen ayarlar ve bilgiler, .NET çerçevesini kullanan uygulamalarla ilgilidir. .NET dışı uygulamalar veya hizmetler tarafından kullanılan proxy yapılandırmalarını yansıtmayabilirler.

3. netsh Komutunu Kullanma

Netsh (Ağ Kabuğu), Windows'ta ağla ilgili farklı ayarlarla iletişim kurmak için kullanılan komut satırı aracıdır.

Proxy ayarlarını almak için netsh komutunu kullanalım:

netsh Komutunu kullanın:

netsh winhttp show proxy

ÇIKTI:

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

Windows makinelerde yukarıdaki komut, mevcut proxy ayarlarını kontrol etmek için kullanışlıdır ve proxy ayarlarını doğrulamak ve ağ bağlantısı sorunlarını gidermek için faydalıdır.

winhttp, netsh için bağlamı belirledi; bu, Windows HTTP hizmetleri ayarlarıyla (WinHTTP ayarları) çalışmak istediğimizi gösterir. show proxy, WinHTTP bağlamı içindeki, PowerShell konsolunda geçerli proxy ayarlarını görüntüleyen özel komuttur.

Bu komutu yürüttükten sonra geçerli proxy sunucusunu, bağlantı noktası numarasını ve yapılandırılmış herhangi bir atlama listesini aldık (yukarıdaki çıktıya bakın).

netsh winhttp show proxy'nin, bir kullanıcı için yapılandırılan proxy ayarlarını web tarayıcısında (Internet Explorer, Chrome veya Firefox gibi) görüntülemediğini unutmamak önemlidir. Bu ayarlar kullanıcıya özeldir ve WinHTTP ayarlarından ayrı olarak saklanır.

4. Internet Explorer Proxy Ayarlarına Erişim

Internet Explorer Proxy Ayarlarına erişim, Internet Explorer (IE) için özel olarak ayarlanmış proxy yapılandırmasını bulmak amacıyla Windows Kayıt Defterinin sorgulanmasını içerir. Bu yaklaşım, bazı eski veya eski sistemler de dahil olmak üzere birçok Windows uygulamasının Internet Explorer'da tanımlanan proxy ayarlarını kullanması gerçeğine dayanmaktadır.

Get-ItemProperty Cmdlet'ini kullanın:

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

ÇIKTI:

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

Yukarıdaki kod, proxy ayarlarını Windows kayıt defterinden almıştır. Nasıl? Bu örnekte, belirtilen öğenin özelliklerini almak için Get-ItemProperty cmdlet'ini kullandık. Bizim durumumuzda bu, -Path parametresi kullanılarak belirtilen kayıt defteri anahtarıydı.

Kayıt defteri anahtarı yolundaki HKCU, Windows kayıt defterindeki HKEY_CURRENT_USER kovanını belirtir. Bu kayıt defteri anahtarı, İnternet Ayarları'nı, özellikle de geçerli kullanıcının proxy ayarlarını içerir. Get-ItemProperty cmdlet'inin çıktısını, ProxyEnable ve ProxyServer özelliklerini seçmek için Select cmdlet'ine aktardık. karşılık gelen değerler.

ProxyEnable, proxy'nin etkin olup olmadığına bakılmaksızın durumunu gösterir. ProxyEnable özelliğinin değeri 1 ise bu, proxy'nin etkin olduğu anlamına gelir. Oysa bu özelliğin 0 değeri proxy'nin etkin olmadığını gösterir. ProxyServer özelliği, proxy-sunucu ile ilgili ayrıntıları Sunucu_IP:Port olarak içerir.

Select cmdlet'i, PowerShell'deki Select-Object cmdlet'inin takma adıdır.

5. WebRequest Sınıfını Kullanmak

Bu yöntem, WebRequest sınıfını kullanarak proxy ayarlarını çıkarmak için bir web isteği oluşturmayı içerir.

WebRequest sınıfını kullanma:

$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: belirli bir URL için bir nesne oluşturur.
$request.Proxy: Bu istek tarafından kullanılan proxy'yi alır.
GetProxy( $request.RequestUri).ToString(): Proxy'nin URI'sinin çıktısını verir.

6. Windows Ayarlarını Kullanma

Windows Ayarları > Ağ ve İnternet > Proxy'ye gidin ve proxy sunucusuyla ilgili ayrıntıları görün; aşağıdaki ekran görüntüsünü kontrol edin.

Ayrıca Google adres çubuğunda chrome://net-internals/#proxy komutunu kullanabilir ve Enter'a tıklayabiliriz.

7. Sonuç

PowerShell'de proxy ayarlarını edinmenin dört yöntemini araştırdık ve çeşitli ağ yapılandırmalarına ve gereksinimlerine yanıt verdik.

Bu yöntemler, .NET Framework sınıflarını kullanmaktan, Windows Kayıt Defterini sorgulamaktan netsh gibi sistem komutlarını çalıştırmaya kadar uzanır. Her teknik, PowerShell betiklerinin ağ bağlantılı bir ortamda proxy ayarlarını doğru bir şekilde tanımlayıp kullanabilmesini sağlamak için güvenilir bir yol sunar.

İlgili makaleler