PowerShell İşlevi: Varsayılan Ağ Geçidini Test-Gateway ile Test Etme


Bazen bilgisayarınızın diğer ana bilgisayarlarla veya internetle bağlantısı kesilebilir. Yapmanız gereken ilk şey nedir? Örneğin, diğer ana bilgisayarlara veya varsayılan ağ geçidinize ulaşmayı deneyebilirsiniz. Elbette, OSI Modelinin merdivenine tırmanıp ağ kablonuzu kontrol ederek (Katman 1) aşağıdan yukarıya yöntemini kullanabilir, tekrar yukarı çıkıp (Katman 2) ağ kartınızı veya anahtarınızı kontrol edebilir veya diğer yolu kullanabilirsiniz. ve aşağı inin.

Bu blog yazısında aşağı inip bir PowerShell işlevi kullanarak Varsayılan Ağ Geçidini kontrol edeceğiz. Yerel ana bilgisayarın yönlendirme tablosundan Varsayılan Ağ Geçidinin IP Adresini okuyan küçük bir fonksiyon oluşturdum. Hadi başlayalım.

Varsayılan Ağ Geçidinin IP Adresini Toplama

Aşağıdakiler bana Varsayılan Ağ Geçidimin IP'sini veriyor:

Get-NetRoute -DestinationPrefix 0.0.0.0/0

Kaç tane ağ kartının kurulu ve yapılandırılmış olduğuna bakılmaksızın her zaman bana Varsayılan Ağ Geçidinin IP'sini verdiğini unutmayın. Buna Varsayılan Rota (0.0.0.0/0) veya Tesisin Son Ağ Geçidi denir. Varsayılan Ağ Geçidimin IP'si 192.168.0.1. Bir sonraki adıma geçelim.

Test Bağlantısını Keşfetmek

Makalemde Ping'in modern versiyonu: Test-Connection Test-Connection cmdlet'iyle oynadım. Test Bağlantısı ping gibidir. Aşağıdakiler için Ağ Geçidinin IP'sini test etmek için Test Bağlantısına ihtiyacımız var. Öncelikle ağ geçidimize ping atmayı deneyebiliriz.

Test-Connection -ComputerName 192.168.0.1

Güzel. Ama aradığımız şey bu değil. IP'yi Yönlendirme Tablosundan çağırmak istiyoruz. Bunun için NextHop'un özelliğini sadece IP Adresini alacak şekilde genişletmeliyiz.

Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -ExpandProperty NextHop

Yani bu komutu Test-Connection'a ekleyebileceğimizi biliyoruz.

Test-Connection -ComputerName (Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -ExpandProperty NextHop)

Get-NetRoute'u neden yuvarlak parantez içine koydum? Yuvarlak parantez içindeki komutlar hemen yürütülür. Bu nedenle, ping başladığında Ağ Geçidinin IP Adresi zaten oradadır!

Harika! Fonksiyonu yazmaya başlayalım.

Varsayılan Ağ Geçidine bağlantıyı test etmek için bir işlev oluşturma

Tamam, amacım bir Test-Gateway komutu oluşturmak. Planımla eşleşecek bir fonksiyon yaratalım. Ayrıca çıktının yalnızca doğru veya yanlış göstermesini istiyorum.

function Test-Gateway {Test-Connection -ComputerName (Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -ExpandProperty NextHop) -Quiet}

Şimdi heyecan verici an geliyor…

Test-Gateway

Yaşasın! İşe yarıyor.

Kalıcı hale getirmek

Oluşturduğunuz işlevler yalnızca mevcut PowerShell Oturumunuzda kullanılabilir; bu, PowerShell'i kapattığınızda bunların kaybolacağı anlamına gelir.

İşlevimi beğendiyseniz PowerShell profilinize eklemeniz yeterlidir. O zaman bu gezegendeki en iyi komut satırını her başlattığınızda kullanılabilir olacaktır. PowerShell'in profil dosyanızı çalıştırmasına izin vermek, profili oluşturmak ve işlevi içine koymak için aşağıdaki kodu PowerShell'e kopyalayın.

Set-ExecutionPolicy remotesigned -force
New-Item $profile -Force | Out-Null
Add-Content $profile -Value {function Test-Gateway {Test-Connection -ComputerName (Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -ExpandProperty NextHop) -Quiet}}

Komut artık kalıcı hale geldi. PowerShell'i her başlattığınızda yüklenecek olan profilinize dahil edilir.

notepad $profile

PowerShell'i kapatın ve yeniden açın. Test-Gateway'i çalıştırın. İyi eğlenceler!

Ağ Geçidini Uzak Ana Bilgisayarlarda Test Etme

Diğer makalelerimden birinde, uzaktan işlem içeren gelişmiş bir işlevi göstermiştim. Diğer ana bilgisayarlara bağlanır, o ana bilgisayarın yönlendirme tablosunu kontrol eder ve ardından bu ana bilgisayarın kendi Varsayılan Ağ Geçidine ulaşıp ulaşamayacağını kontrol eder.

Daha fazlasını burada bulabilirsiniz: PowerShell: Yönlendirme Tablosunu okuyarak localhost ve Uzak Ana Bilgisayarlarda Varsayılan Ağ Geçidinin bağlantısını test etme

PowerShell Modülü

Bu işlevi, önceki bir blog yayında anlattığım PowerShell Modülü olarak da kaydedebilirsiniz: PowerShell İşlevleri: İlk PowerShell Modül Komutunuzu nasıl oluşturabilirsiniz?

İlgili makaleler