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

如何编写PowerShell脚本实现多IP Telnet并将成功连接输出设为绿色

PowerShell 批量Telnet多IP并高亮成功连接行

下面是实现需求的脚本,用System.Net.Sockets.TcpClient替代原生Telnet命令(更便于捕获连接状态),同时给成功的输出行加上绿色高亮:

# 定义待测试的IP+端口列表,格式为 "IP地址:端口号"
$targets = @(
    "192.168.1.1:80",
    "10.0.0.2:22",
    "8.8.8.8:53",
    "127.0.0.1:3389"
)

foreach ($target in $targets) {
    # 拆分IP和端口
    $ip, $port = $target -split ":"
    $tcpConn = New-Object System.Net.Sockets.TcpClient

    try {
        # 设置连接超时(单位:毫秒)
        $tcpConn.SendTimeout = 2000
        $tcpConn.ReceiveTimeout = 2000
        $tcpConn.Connect($ip, $port)
        
        # 连接成功时绿色输出
        Write-Host "✅ 连接成功: $target" -ForegroundColor Green
    }
    catch {
        # 连接失败时输出错误信息(可加-ForegroundColor Red改成红色)
        Write-Host "❌ 连接失败: $target - 错误信息: $($_.Exception.Message)"
    }
    finally {
        # 无论成功失败,都关闭连接释放资源
        $tcpConn.Close()
    }
}

关键说明:

  • 用System.Net.Sockets.TcpClient而非原生Telnet命令:原生Telnet没有返回值,无法直接判断连接状态,TcpClient能通过Connect()方法的异常捕获来明确结果
  • 绿色高亮实现:通过Write-Host -ForegroundColor Green指定成功行的输出颜色
  • 超时控制:设置SendTimeout和ReceiveTimeout避免脚本长时间等待无响应的IP
  • 资源释放:finally块确保无论连接成功或失败,都关闭TCP连接,避免资源泄漏

自定义调整建议:

  1. 修改$targets列表,添加你需要测试的IP和端口
  2. 如果想给失败行加红色高亮,在catch的Write-Host后加上-ForegroundColor Red
  3. 调整超时时间:把2000改成你需要的毫秒数(比如5000=5秒)

内容的提问来源于stack exchange,提问作者Iman Jafari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:00:55