如何修改定时检测端口的PowerShell脚本并判断TcpTestSucceeded状态
修改PowerShell端口检测脚本:添加结果判断与标准输出
以下是修改后的脚本,满足每10秒检测指定端口、判断连通状态并执行指定命令、同时输出到标准输出和文件的需求:
$output_file = 'C:\networktest-out.txt' $port = 9392 $cloud_gate_name = '192.168.100.8' while ($true) { # 捕获端口连通性检测结果 $testResult = Test-NetConnection -ComputerName $cloud_gate_name -Port $port # 将检测结果输出到标准输出,同时追加到日志文件 Write-Output $testResult $testResult >> $output_file # 记录当前检测的时间戳,同步输出到控制台和文件 $currentDateTime = Get-Date -Format G Write-Output "===== 检测时间: $currentDateTime =====" Add-Content $output_file -Value "===== 检测时间: $currentDateTime =====" # 判断端口是否未连通,若未连通则执行指定命令 if (-not $testResult.TcpTestSucceeded) { Write-Output "警告:端口 $port 未开放,执行指定操作..." # 替换为你需要执行的实际命令 # someother command } Start-Sleep -Seconds 10 }
关键修改说明:
- 捕获检测结果:用
$testResult变量存储Test-NetConnection的返回对象,直接访问TcpTestSucceeded属性进行状态判断 - 标准输出支持:通过
Write-Output将检测结果和时间戳输出到控制台(标准输出),同时保留原有的文件追加逻辑 - 时间戳同步:调整时间戳记录位置,让每个检测结果对应明确的时间标记,避免原脚本中时间与结果不匹配的问题
- 状态判断优化:使用
-not运算符判断端口未连通,这是PowerShell中更简洁直观的写法 - 端口类型规范:将端口变量改为数字类型,符合
Test-NetConnection参数的预期类型
内容的提问来源于stack exchange,提问作者Al Grant
相关产品推荐
相关产品推荐

