Я хотел бы получить общее количество байтов, отправленных и полученных определенной программой.
Я знаю, что получаю общие данные по всему компьютеру, выбрав пункт «Состояние» в контекстном меню сетевой карты, но не по каждому приложению.
Это возможно?
решение1
С этимМарк Руссиновичинструмент Microsoft
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
Вы можете создать фильтр по имени вашего процесса или PID вФильтрменю. Затем перейдите вИнструментыменю иСводка сети.
Или с
https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview
Если у вас есть powershell note и вы хотите написать свой собственный инструмент:
Французский:
get-counter "\Processus(firefox*)\Nombre d’octets lus/s" -Continuous | foreach {
[math]::round((($_.countersamples.cookedvalue | measure -sum).sum / 1KB), 2)
}
Английский
get-counter "\Process(firefox*)\IO Read Bytes/sec" -Continuous | foreach {
[math]::round((($_.countersamples.cookedvalue | measure -sum).sum / 1KB), 2)
}
Работайте с этим кодом и этим циклом. Создайте переменную total и назначьте вычисленную сумму в каждой итерации. Настройте КБ, может быть МБ, ГБ ...
Сохраните этот скрипт в файл .ps1, откройтекомандная строкаи выполните этот скрипт (CTRL+C для остановки)
$process="firefox"
$totalKB = 0
while($true){
get-counter "\Process($process*)\IO Read Bytes/sec" | foreach {
$totalKB += [math]::round((($_.countersamples.cookedvalue | measure -sum).sum / 1KB), 2)
}
Write-Host -NoNewline -ForegroundColor Yellow ("`r"+$process.ToUpper()+": "+([string]$totalKB)+" KB ")
Start-Sleep -Milliseconds 500
}
write-host
РЕЗУЛЬТАТ (ПРЯМОЙ ЭФИР, такой же, как Linux Watch, например)
FIREFOX: 3256 КБ
Ссылка: