特別なネットワークツールを使わずに、Windowsでネットワークのトラフィックを計測の方法

特別なネットワークツールを使わずに、ネットワークのトラフィックを計測する方法。
(WinDumpもWireSharkも面倒だなーと)

PowerShellから、これをコピペ(xxxx.batにする必要なし)すると、network_data.logというファイルができる

while ($true) {
    $NetworkInterfaces = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' }
 
    foreach ($NetworkInterface in $NetworkInterfaces) {
        $Statistics = Get-NetAdapterStatistics -Name $NetworkInterface.Name
        $ReceivedBytes = $Statistics.ReceivedBytes
        $SentBytes = $Statistics.SentBytes
 
        $TimeStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        $Record = "$TimeStamp, Interface: $($NetworkInterface.Name), Received Bytes: $ReceivedBytes bytes, Sent Bytes: $SentBytes bytes"
 
        Add-Content -Path "network_data.log" -Value $Record
    }
 
    Start-Sleep -Seconds 10  # 10秒待機
}

で、network_data.logの内容は、以下の通り

PS C:\Users\azureuser> more .\network_data.log
2023-12-07 10:02:07, Interface: Ethernet 7, Received Bytes: 182088626 bytes, Sent Bytes: 1971150950 bytes
2023-12-07 10:02:07, Interface: Ethernet, Received Bytes: 183155088 bytes, Sent Bytes: 1882163584 bytes
2023-12-07 10:02:17, Interface: Ethernet 7, Received Bytes: 182107502 bytes, Sent Bytes: 1971187408 bytes
2023-12-07 10:02:17, Interface: Ethernet, Received Bytes: 183176035 bytes, Sent Bytes: 1882198919 bytes
2023-12-07 10:02:27, Interface: Ethernet 7, Received Bytes: 182141183 bytes, Sent Bytes: 1971266248 bytes
2023-12-07 10:02:27, Interface: Ethernet, Received Bytes: 183207355 bytes, Sent Bytes: 1882275443 bytes

で、ここで、"Ethernet 7"と、"Ethernet"の2つのインターフェースがあることが分かるので、

$NetworkInterfaces = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' -and $_.Name -eq 'Ethernet' }

とすると、'Ethernet' とか 'Ethernet 7'のどちらかを選ぶことができる。

2023,江端さんの技術メモ

Posted by ebata