如何编写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连接,避免资源泄漏
自定义调整建议:
- 修改
$targets列表,添加你需要测试的IP和端口 - 如果想给失败行加红色高亮,在
catch的Write-Host后加上-ForegroundColor Red - 调整超时时间:把
2000改成你需要的毫秒数(比如5000=5秒)
内容的提问来源于stack exchange,提问作者Iman Jafari
相关产品推荐
相关产品推荐

