PowerShell: Test-OpenPort ile açık TCP Bağlantı Noktalarını test edin (birden fazla ana bilgisayar, birden fazla bağlantı noktası numarası)
Başlığın da söylediği gibi, bugün her şey port taramasıyla ilgili. Bir bilgisayar başka bir bilgisayara SYN gönderdiğinde uzaktaki bilgisayar genellikle SYN + ACK veya RST ile yanıt verir. Bu sayede bir portun açık olup olmadığını test edebiliriz.
Bir portun açık olup olmadığını test etmek için farklı port tarayıcıları kullanılabilir. Veya Test-NetConnection veya kendi kendine oluşturulan bir komut dosyası. NetConnection'ı Test Etmeyi Unutmayın:
Ancak birden fazla bilgisayarı ve birden fazla bağlantı noktasını test etmeye çalışırsanız bir hata mesajıyla karşılaşırsınız.
Aşağıdaki işlev bu sorunu giderir. Test-OpenPort, birden fazla bilgisayarın ve birden fazla bağlantı noktasının aynı anda test edilmesine olanak tanır.
Test-OpenPort
Fonksiyonun kendisine geçmeden önce fonksiyonumu çalışırken göstermek istiyorum. Fonksiyonun iki parametresi vardır: Hedef ve Bağlantı Noktası.
Test-OpenPort -Target 192.168.0.1 -Port 80
Bu parametreler adlandırılmadığından parametre adlarını atlayabilirsiniz.
Test-OpenPort 192.168.0.1 80
Hedefi de ihmal edebilirsiniz. Bu parametrenin varsayılan değeri localhost'tur.
Test-OpenPort -Port 80,443
Birden fazla bilgisayarda ve bağlantı noktasında çalıştırmak virgül kullanımını gerektirir.
Test-OpenPort 192.168.0.1,sid-500.com -Port 80,443
Ekranın çıktısı bir nesnedir. Bu nedenle, bu nesneyi Select-Object veya Format-Komutları (Format-Tablo…) ile özelleştirebilirsiniz.
Test-OpenPort 192.168.0.1,sid-500.com -Port 80,443,53 | Sort-Object Status
Daha tatlı bir görünüm için:
Test-OpenPort 192.168.0.1,sid-500.com -Port 80,443,53 | Sort-Object Status | Out-GridView
İşlev
Bu işlevi PowerShell ISE oturumunuza kopyalayın ve yeşil başlat düğmesine basın.
function Test-OpenPort {
<#
.SYNOPSIS
Test-OpenPort is an advanced Powershell function. Test-OpenPort acts like a port scanner.
.DESCRIPTION
Uses Test-NetConnection. Define multiple targets and multiple ports.
.PARAMETER
Target
Define the target by hostname or IP-Address. Separate them by comma. Default: localhost
.PARAMETER
Port
Mandatory. Define the TCP port. Separate them by comma.
.EXAMPLE
Test-OpenPort -Target sid-500.com,cnn.com,10.0.0.1 -Port 80,443
.NOTES
Author: Patrick Gruenauer
Web:
https://sid-500.com
.LINK
None.
.INPUTS
None.
.OUTPUTS
None.
#>
[CmdletBinding()]
param
(
[Parameter(Position=0)]
$Target='localhost',
[Parameter(Mandatory=$true, Position=1, Helpmessage = 'Enter Port Numbers. Separate them by comma.')]
$Port
)
$result=@()
foreach ($t in $Target)
{
foreach ($p in $Port)
{
$a=Test-NetConnection -ComputerName $t -Port $p -WarningAction SilentlyContinue
$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Target'=$a.ComputerName;
'RemoteAddress'=$a.RemoteAddress;
'Port'=$a.RemotePort;
'Status'=$a.tcpTestSucceeded
})
}
}
Write-Output $result
}
Kalıcı hale getirin
Yaklaşımımı beğendiyseniz PowerShell ISE'yi açın. İşlevi ISE oturumunuza kopyalayın. C:\Program Files\Windows PowerShell\Modules konumunda bir klasör oluşturun ve kodu psm1 dosyası olarak kaydedin. Dosya adınızla klasör adınızın eşleştiğinden emin olun.
PowerShell'i kapatın. PowerShell'i tekrar açın. Komut artık tüm kullanıcılar tarafından kullanılabilir. Test-OpenPort'la iyi eğlenceler!











