使用powershell发现远程主机中的开放端口范围

问题描述 投票:0回答:1

我们如何使用 powershell 检查给定主机是否有任何开放端口?

Test-NetConnection 可以循环使用,但是有没有更快、更实用的方法来检查大范围的端口?

Test-NetConnection ###.###.###.### -Port ##
powershell networking
1个回答
0
投票

正如您所发现的,

Test-NetConnection
支持一次仅定位一台计算机和端口。

PowerShell(核心)7+中,您可以使用

ForEach-Object
-Parallel
并行线程瞄准多个端口以加速操作;例如:

, 21 + 80..88 + 8080 | 
   ForEach-Object -ThrottleLimit 32 -Parallel { 
     Test-NetConnection  127.0.0.1 -Port $_ 
   }
  • , 21 + 80..88 + 8080
    是端口号的示例数组,并显示将单个数字与 range (
    ..
    ) 端口号混合;
    ,
    之前的
    21
    对于确保单个数字包装在数组中是必要的,这确保
    +
    执行数组串联
  • -ThrottleLimit
    确定一次可以有多少个线程处于活动状态(默认为
    5
    );虽然通常不这样做是有道理的 超过可用 CPU 核心的数量,在network绑定操作中(例如当前的情况),该数量可能会更高,
    32
    remoting 操作中的默认设置(使用
    Invoke-Command -ComputerName
    时)。
© www.soinside.com 2019 - 2024. All rights reserved.