PowerShell循环执行tnc端口检测命令的实现咨询
PowerShell 循环端口测试实现方案
该需求可直接通过PowerShell内置的循环逻辑和属性判断实现,以下是完整可用脚本:
# 自定义配置项 $targetHost = "替换为实际测试地址" $targetPort = 替换为实际测试端口 $failureLogPath = "替换为日志存储路径,例如:C:\TcpTestFailure.log" while ($true) { $testResult = tnc -ComputerName $targetHost -Port $targetPort # 仅测试失败时执行输出和日志记录 if ($testResult.TcpTestSucceeded -eq $false) { # 控制台输出失败信息 Write-Host "`n=== 端口测试失败 $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') ===" $testResult | Format-List # 追加写入失败日志到文件 "`n=== 端口测试失败 $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') ===" | Out-File -FilePath $failureLogPath -Append -Encoding UTF8 $testResult | Out-File -FilePath $failureLogPath -Append -Encoding UTF8 } Start-Sleep -Seconds 5 }
脚本说明
- 参数替换:使用前请修改开头三个配置项的值为你的实际需求,端口请直接填写数字不需要加引号
- 运行逻辑:脚本启动后会无限循环执行测试,每5秒执行一次,仅当端口连接失败时才会在控制台打印信息,同时将失败记录追加写入日志文件,不会覆盖历史记录,脚本也不会中断运行
- 停止方式:如需终止脚本运行,直接在PowerShell窗口按下
Ctrl + C即可
可选优化(按需使用)
如果你需要导出结构化的日志方便后续筛选统计,可以将日志写入部分替换为CSV格式导出:
# 替换原有日志写入代码即可 $testResult | Select-Object ` @{Name='测试时间';Expression={Get-Date -Format 'yyyy-MM-dd HH:mm:ss'}}, ComputerName,RemoteAddress,RemotePort,InterfaceAlias,SourceAddress,TcpTestSucceeded | Export-Csv -Path $failureLogPath -Append -Encoding UTF8 -NoTypeInformation
内容的提问来源于stack exchange,提问作者Gary
相关产品推荐
相关产品推荐

