如何在PowerShell持续Ping测试日志中追加网络连接类型?
带网络连接类型的持续Ping测试记录方案
完全可以实现,以下是修改后的脚本及说明:
修改后的运行并记录脚本
这个脚本会在每条Ping记录中追加当前的网络连接类型(接口别名),解决你之前无法整合的问题:
ping.exe -l 1500 -t W2K16svr | Foreach-Object { # 获取所有网络连接的接口别名,用逗号分隔 $networkInterfaces = (Get-NetConnectionProfile | Select-Object -ExpandProperty InterfaceAlias) -join ", " # 格式化输出:日期 + 网络类型 + Ping结果 "{0} - [网络接口: {1}] - {2}" -f (Get-Date), $networkInterfaces, $_ } | Out-File C:\Temp\PingTest.txt -Encoding UTF8
如果需要只记录当前正在使用的网络接口(即默认网关对应的接口,更贴合切换网络的场景),可以用这个优化版本:
ping.exe -l 1500 -t W2K16svr | Foreach-Object { # 获取默认路由对应的网络接口 $activeInterface = Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Select-Object -First 1 -ExpandProperty InterfaceAlias # 处理无网络的情况 $networkType = $activeInterface ? $activeInterface : "无活跃网络连接" "{0} - [当前网络: {1}] - {2}" -f (Get-Date), $networkType, $_ } | Out-File C:\Temp\PingTest.txt -Encoding UTF8
监控脚本(无需修改)
依然使用原来的命令在另一个PowerShell实例中实时查看最新记录:
Get-Content C:\Temp\PingTest.txt -Tail 10 -Wait
常见报错原因说明
你之前尝试整合时出错,大概率是因为Get-NetConnectionProfile会返回数组结果(当存在多个网络接口时),直接拼接字符串会触发类型不匹配的错误。上面的脚本通过-join ", "将数组转为字符串,或者筛选出单个活跃接口,解决了这个问题。
内容的提问来源于stack exchange,提问作者Ants1060
相关产品推荐
相关产品推荐

