You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell探测远程主机的开放端口范围

使用PowerShell高效检查指定主机的开放端口

单端口/少量端口检查

直接使用Test-NetConnection命令即可快速验证单个或少量端口的连通性,语法简单直观:

Test-NetConnection 目标IP或主机名 -Port 端口号

执行后会返回端口的连通状态、往返延迟等详细信息,适合快速验证特定端口。

大范围端口高效检查

如果需要扫描大量端口,循环调用Test-NetConnection会因同步执行导致效率极低,推荐使用.NET的TcpClient类实现异步批量检测,通过并发连接大幅提升扫描速度。以下是实用的脚本示例:

function Test-OpenPorts {
    param(
        [Parameter(Mandatory=$true)]
        [string]$ComputerName,
        [Parameter(Mandatory=$true)]
        [int[]]$PortRange,
        [int]$Timeout=1000
    )

    # 创建异步检测任务
    $tasks = $PortRange | ForEach-Object {
        $port = $_
        [System.Threading.Tasks.Task]::Run({
            try {
                $client = New-Object System.Net.Sockets.TcpClient
                # 异步连接并等待超时
                if ($client.ConnectAsync($ComputerName, $port).Wait($Timeout)) {
                    [PSCustomObject]@{ Port = $port; Status = "开放" }
                } else {
                    [PSCustomObject]@{ Port = $port; Status = "关闭/超时" }
                }
            } catch {
                [PSCustomObject]@{ Port = $port; Status = "连接错误" }
            } finally {
                $client.Dispose()
            }
        })
    }

    # 等待所有任务完成并返回结果
    [System.Threading.Tasks.Task]::WaitAll($tasks)
    $tasks.Result | Where-Object { $_.Status -eq "开放" }
}

# 使用示例:扫描192.168.1.1的1-1000端口,超时时间500毫秒
Test-OpenPorts -ComputerName "192.168.1.1" -PortRange (1..1000) -Timeout 500

这个脚本会异步发起所有端口的连接请求,无需等待单个端口检测完成再进行下一个,能显著提升大范围端口扫描的效率。你可以根据需求调整Timeout参数,平衡扫描速度和准确性。

内容的提问来源于stack exchange,提问作者Rafael Borja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 13:37:13