测试端口:使用 PowerShell 作为端口扫描器
很久以前,我创建了一个类似于端口扫描器的小函数。它不是 nmap 等企业扫描仪的替代品,但在手边没有 nmap 时,它对于快速测试非常有用。 Test-Port 命令调用 Test-NetConnection 并允许您指定多个端口号。这没什么特别的,但值得分享。
快速浏览 TCP 握手
当一台计算机向另一台计算机发送 SYN 时,远程计算机通常会用 SYN + ACK 或 RST 进行应答。通过这个事实,我们可以测试端口是否打开。
测试网连接
要测试端口是否打开,可以使用不同的端口扫描器。或者 Test-NetConnection 或自制脚本。记住测试网络连接:
看来 cnn.com 的端口 80 已打开(SYN + ACK)。
测试端口
好吧,正如所宣布的,我的小脚本使您能够测试多个端口。这仅适用于 PowerShell 4.0 及更高版本。 (感谢社区引起我的注意)
将以下代码复制到 PowerShell 或 PowerShell ISE。运行。命令 Test-Port 然后变得可用。
function Test-Port
{$computer=Read-Host "Computername | IP Address?"
$port=Read-Host "Port Numbers? Separate them by comma"
$port.split(',') | Foreach-Object -Process {If (($a=Test-NetConnection $computer -Port $_ -WarningAction SilentlyContinue).tcpTestSucceeded -eq $true) {Write-Host $a.Computername $a.RemotePort -ForegroundColor Green -Separator " ==> "} else {Write-Host $a.Computername $a.RemotePort -Separator " ==> " -ForegroundColor Red}}
}
您将被要求提供目的地和港口。它应该类似于下面的屏幕截图。开放端口标记为绿色,关闭端口标记为红色。
你觉得有什么奇怪的吗?当 sid-500.com 对应的端口(https ==> 443)关闭时,如何阅读本文?别担心,这既不是伪造的屏幕截图,也不是错误或魔法。我的 Active Directory 域名是 sid-500.com。在此屏幕中测试了我的内部域。 ?
如果您想让所有 PowerShell 会话的所有用户永久使用测试端口,请将其保存为模块。更多关于这里:
PowerShell 函数:如何创建第一个 PowerShell 模块命令




