PowerShell test bağlantısı | Test Bağlantısı komutu nasıl çalışır?
PowerShell test bağlantısına giriş
PowerShell'deki Test Bağlantısı cmdlet'i uzak bilgisayarlara İnternet Denetim Mesajı Protokolü (ICMP) yankı isteği paketleri gönderir ve bunun karşılığında uzak bilgisayarların canlı mı, ağda mı olduğunu veya bağlanıp bağlanamayacağını kontrol etmek için yankı yanıtını alır. Bilinen ping komutunun aksine, bu komut bağlantıları test eder, arabellek boyutunu, umut sayısını, kısıtlama sınırlarını, her istek arasındaki gecikmeyi ayarlar ve ping durumunu içerir.
Sözdizimi
Sözdizimi aşağıdadır:
Çift 1:
Test-Connection
[-TargetName] <string[]>
[-Ping]
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <string>]
[-MaxHops <int>]
[-Count <int>]
[-Delay <int>]
[-BufferSize <int>]
[-DontFragment]
[-TimeoutSeconds <int>]
[-Quiet]
[<CommonParameters>]
Çift2:
Test-Connection
[-TargetName] <string[]>
-Repeat
[-Ping]
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <string>]
[-MaxHops <int>]
[-Delay <int>]
[-BufferSize <int>]
[-DontFragment]
[-TimeoutSeconds <int>]
[-Quiet]
[<CommonParameters>]Çift3:
Test-Connection
[-TargetName] <string[]>
-MtuSize
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-TimeoutSeconds <int>]
[-Quiet]
[<CommonParameters>]Çift4:
Test-Connection
[-TargetName] <string[]>
-Traceroute
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <string>]
[-MaxHops <int>]
[-TimeoutSeconds <int>]
[-Quiet]
[<CommonParameters>]Çift5:
Test-Connection
[-TargetName] <string[]>
-TcpPort <int>
[-IPv4]
[-IPv6]
[-ResolveDestination]
[-Source <string>]
[-TimeoutSeconds <int>]
[-Quiet]
[<CommonParameters>]Lütfen unutmayın: Sözdizimi olarak aynı anda tek bir çift kullanmamız gerekir. Çiftlerin birleşimini kullanamayız. Örneğin Mtusize ve TraceRoute parametrelerini bir arada kullanamıyoruz.
PowerShell'de Test Bağlantısı komutu nasıl çalışır?
Bu komutun tek amacı uzak bilgisayarlara ICMP istekleri göndererek uzak bilgisayarların çevrimiçi olup olmadığını kontrol etmektir. Uzak bilgisayarın yanıtı çevrimdışına, güvenlik duvarı kurallarına, ağ güvenliği kurallarına vb. bağlıdır.
Çoğu zaman uzaktaki bilgisayarlar çevrimiçidir ancak yukarıda belirtilen nedenlerden dolayı yanıt veremezler. Bu komut, ping komutundan çok daha iyidir, çünkü yanıt olarak sayım sayısını belirleyebileceğimiz, birden fazla sunucuya istek gönderebileceğimiz, arabellek boyutunu ve MTU sınırını ayarlayabileceğimiz gibi farklı parametrelerle oynayabiliriz.
Örnekler
Aşağıda farklı örneklere yer verilmiştir:
Örnek 1 - Uzak bir bilgisayar için Bağlantı Testi.
Bu örnek sadece uzaktan bağlantıyı açıklamaktadır.
Test-Connection -ComputerName LabMachine2k12Çıktı:
Yukarıdaki örnekte Kaynak, kaynak makineden bahseder, hedef uzak bilgisayardır, IP adresi ise uzak bilgisayarın IP'sidir.
PowerShell çekirdek sürümü için (sürüm 6.0+) ComputerName parametresi TargentName olarak yeniden adlandırıldı.
Örnek 2 - Birden fazla uzak bilgisayar için Bağlantı Testi.
Birden fazla uzak bilgisayarın bağlantısını kontrol etmek için -ComputerName parametresi için birden fazla bilgisayar adı sağlayabiliriz çünkü bu parametre dize dizisini kabul eder.
help Test-Connection -Parameter ComputerNameÇıktı:
ComputerName parametresinin bir String dizi parametresi olup olmadığını kontrol edebilirsiniz.
Örnek 3 - -Count parametresiyle Bağlantı Testi.
-Count Parametresini kullanarak uzaktaki bilgisayardan yanıt olarak almamız gereken sayım sayısını belirtebiliriz. Uzak bilgisayarlardan aldığımız varsayılan yanıt sayısı 4'tür.
Test-Connection -ComputerName LabMachine2k12 -Count 2Çıktı:
Bu parametre genellikle birden fazla bilgisayarın bağlantılarını test ettiğimizde kullanılır. Varsayılan parametreyi korursak, 4 sayılır ve birden fazla sunucunun uzaktan bağlantısını kontrol etmek beklenen süreden daha uzun sürer.
Örnek 4 - -Quiet parametresiyle Bağlantıyı Test Edin.
-Quiet parametresi çıktıyı Boolean (Doğru veya Yanlış) cinsinden döndürür. Sunucuya ulaşılabilirse çıktı doğrudur; aksi halde çıktı yanlıştır.
Örneğin,
Test-Connection -ComputerName LabMachine2k12 -QuietÇıktı:
Uzaktaki sisteme ulaşılamıyorsa,
Programcılar çoğu zaman birden fazla sunucunun bağlantılarını kontrol etmek için -Count ve -Quiet parametrelerini birlikte kullanırlar. Örneğin sunucuların listesini içeren bir Servers.txt dosyamız var ve sunucunun erişilebilir olup olmadığını kontrol etmek için aşağıdaki kodu kullanacağız.
foreach($server in (Get-Content C:\temp\Servers.txt)){
if(Test-Connection -ComputerName $server -Count 2 -Quiet){Write-Output "$server is Online"}
else{Write-Output "Server is offline"}
}Örnek 5 - Bağlantı başarılı olursa oturumun kurulması
Yukarıdaki örnek referanstan yola çıkarak, yalnızca bağlantı başarılı olduğunda uzak sunucuyla bir oturum da oluşturabilirsiniz. Örneğin,
if(Test-Connection -ComputerName 'LabMachine2k12' -Count 2 -Quiet){
New-PSSession -ComputerName 'LabMachine2k12'
}Çıktı:
Örnek 6 - -Delay Parametresini Kullanmak
Gecikme parametresini kullanıp saniyeler içerisinde değer sağlayabiliriz. Bu parametre, her istek arasındaki gecikmeyi saniye cinsinden belirtir.
Aşağıdaki örnekte uzak sunuculara 5 saniye aralıklarla 2 adet istek gönderilecek.
Test-Connection -ComputerName LabMachine2k12 -Delay 5 -count 2Varsayılan gecikme 1 saniyedir ancak gecikme parametresi, PowerShell işlemini geciktirdiğinden herhangi bir araştırma veya sorun giderme amacıyla kullanılmadığı sürece önerilmez.
Örnek 7 - BufferSize ile Test Bağlantısı.
BufferSize parametresi Test-Connection komutuyla gönderilen arabelleğin bayt cinsinden boyutunu belirtir. Belirtilmemişse varsayılan değer 32'dir. Bu bir tam sayı parametresidir.
Test-Connection -ComputerName LabMachine2k12 -BufferSize 64Çıktı:
Tampon boyutu belirtilmezse çıktı, Bayt alanında 32 (Varsayılan değer) değerini üretecektir. Bu parametreyi yüksek trafikli ağ durumu için kullanabiliriz.
Örnek 8 - ThrottleLimit parametresinin kullanılması.
ThrottleLimit tamsayı parametresidir ve kurulacak eşzamanlı bağlantıların sayısını belirtir. Varsayılan değeri 32'dir ancak daha fazla eş zamanlı bağlantı için bu değeri değiştirebiliriz.
Test-Connection -ComputerName LabMachine2k12 -ThrottleLimit 50Hem buffersize hem de throttlelimit parametrelerini bir arada kullanabiliriz.
Test-Connection -ComputerName LabMachine2k12 -BufferSize 64 -ThrottleLimit 50Örnek 9 - Farklı kimlik bilgileriyle Bağlantıyı Test Etme.
Uzak sunucu(lar) aynı etki alanında değilse, bağlantıyı test etmek için uzak sunucu kimlik bilgilerini kullanarak bağlanabiliriz. Örneğin,
$creds = Get-Credential
Test-Connection -ComputerName LabMachine2k12 -Credential $creds -Count 2Örnek 10 - TTL parametresi ile Bağlantı Testi.
TimeToLive (Takma Ad: TTL), paketlerin maksimum kaç kez iletilebileceğini belirtir. Ağ geçidindeki, yönlendiricilerdeki vb. her umut için TTL değeri her bir azaltıldığında ve 0 olduğunda hata döndürülür. Varsayılan değeri 128'dir.
Aşağıda gösterilen parametreyi kullanarak TTL değerini değiştirebilirsiniz.
Test-Connection -ComputerName LabMachine2k12 -TimeToLive 200Umutların fazla olması durumunda TTL değerini artırabilirsiniz.
Çözüm
Test Bağlantısı, PowerShell betiğindeki ilk adım ve çok önemli adımdır, çünkü uzak komutları çalıştırırken çok fazla zaman kazandırır çünkü bunlar yalnızca bu komut True değerini döndürdüğünde yürütülebilir. Bazı kuruluşlarda Güvenlik Duvarı, güvenlik nedeniyle ICMP portunu bloke eder ve bu durumda, uzaktaki bilgisayarın ulaşılabilir olup olmadığını Test-WSMan komutunu kullanarak WINRM bağlantısını kullanarak da belirleyebiliriz.







