Powershell
Powershell ile Port Kontrol
Powershell ile port kontrol yapılabilen ve kendim için hazırladığım aşağıdaki scripti paylaşıyorum.
Daha önce powershell ile port kontrol ile ilgili yazılarıma aşağıdaki linklerden erişebilirsiniz.
Bu yazıda ise biraz geniş bir script ile script içerisine yazabileceğiniz portlar ve adresler için port kontrolü yapabileceğiniz bir template hazırladım ve komutlar için de açıklamalar ekledim. Faydalı olması dileğiyle.
Powershell ile port Kontrol Scripti
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
#Script için kullanılacak path değişkenleri yazılır $PathLog = "C:\Software\PortCheck.txt" # Logpath dosyası $Path = "C:\Software\" #Log path dosyası klasörü $FailedPorts = "Failed_Ports.txt" # Failed portların yazılacağı dosya $ConnectedPorts = "Connected_Ports.txt" # Conntected portların yazılacağı dosya # Portların tamamı için bir transcript dosyası create ediyoruz. Start-Transcript $PathLog #Hangi adreslerde port taramaları yapılacaksa belirtillir. (Adresleri değiştirebilirsiniz. 2 den fazha adres yazarsanız #Adresler tek tek yazılır kısmına eklemeniz gerekir.) $mycomputernameorip1 = "google.com" $mycomputernameorip2 = "hotmail.com" #Hangi portlar taranacaksa belirtilir. (Portlaro değiştirebilirsiniz. Virgül ile ayırarak istediğiniz kadar port yazabilirsiniz.) $Myports = 5050,5051,443 #Adresler tek tek yazılır $Myports | ForEach-Object {$ScanMyPorts = $_;(Test-NetConnection -ComputerName $mycomputernameorip1 -Port $ScanMyPorts)} $Myports | ForEach-Object {$ScanMyPorts = $_;(Test-NetConnection -ComputerName $mycomputernameorip2 -Port $ScanMyPorts)} #Transcript Sonlanıyor. Stop-Transcript Start-Sleep 10 #Scriptte ilgili dizine geçilir. cd -Path $Path # koşulumuzu yazıyoruz. Failed yani hata alan bağlanamayan portlar için 1. Connected yani bağlanabilen portlar için 2'ye basıyoruz. $Secim = Read-Host "Failed Portlar için 1 Connected Portları Görmek istiyorsanız 2'e basın" #Failed olan portları görebiliriz if($secim -eq 1) { Get-Content -Path "$PathLog" |? {$_ -match "WARNING: TCP Connect to*"} >> Failed_Ports.txt #Eğer Connected Portlar listelensin isteniyorsa Write-Host -BackgroundColor Red "Kapalı Görünen Portlar aşağıdadır, Lütfen Kontrol ediniz.." Get-Content $FailedPorts |Write-Host -ForegroundColor Red Write-Host -ForegroundColor Green "Kapalı olan portları $Path altında $FailedPorts dosyasında bulabilirsiniz.." Pause } Elseif($secim -eq 2) { Get-Content -Path "$PathLog" |? {$_ -notmatch "WARNING: TCP Connect to*"} >> Connected_Ports.txt #Eğer Connected Portlar listelensin isteniyorsa $a = Select-String -Path $ConnectedPorts -SimpleMatch "TcpTestSucceeded : true" |% {$_.LineNumber} Write-Host -BackgroundColor Red "Açık olan portlar" $a.Count "adettir $ConnectedPorts dosyasında aşağıdaki Line'lardadır , Dosyası açıldı lütfen dosya içerisinden ilgili Line'ları kontrol ediniz." # 10 açık portun line'larını gösterir. 10 dan daha fazla göstermez. 0 olan line'lar dikkate alınmamalı $myfile = @{ bir = $a[0] iki = $a[1] uc = $a[2] dort =$a[3] bes = $a[4] alti =$a[5] yedi = $a[6] sekiz =$a[7] dokuz = $a[8] on =$a[9] } Write-Host $myfile.Values Start-Process notepad $ConnectedPorts Pause } Else { write-warning "Yanlış bir seçim yaptınız. Lütfen 1 veya 2 seçin" } |