The script below can be used to measure the average IO as a percentage of available bandwidth from the network card(s) of a machine. Similar to the Network information in Task Manager. Where more than one Network interface is fitted, the result will be an average. The script includes a small delay (Start-Sleep) because you probably don't want to hammer a production machine with too many WMI queries.
For instructions of how to download and run this script see: Run a PowerShell script.
#Get-Bandwidth.ps1 # Measure the Network interface IO over a period of half a minute (0.5) $startTime = get-date $endTime = $startTime.addMinutes(0.5) $timeSpan = new-timespan $startTime $endTime $count = 0 $totalBandwidth = 0 while ($timeSpan -gt 0) { # Get an object for the network interfaces, excluding any that are currently disabled. $colInterfaces = Get-WmiObject -class Win32_PerfFormattedData_Tcpip_NetworkInterface |select BytesTotalPersec, CurrentBandwidth,PacketsPersec|where {$_.PacketsPersec -gt 0} foreach ($interface in $colInterfaces) { $bitsPerSec = $interface.BytesTotalPersec * 8 $totalBits = $interface.CurrentBandwidth # Exclude Nulls (any WMI failures) if ($totalBits -gt 0) { $result = (( $bitsPerSec / $totalBits) * 100) Write-Host "Bandwidth utilized:`t $result %" $totalBandwidth = $totalBandwidth + $result $count++ } } Start-Sleep -milliseconds 100 # recalculate the remaining time $timeSpan = new-timespan $(Get-Date) $endTime } "Measurements:`t`t $count" $averageBandwidth = $totalBandwidth / $count $value = "{0:N2}" -f $averageBandwidth Write-Host "Average Bandwidth utilized:`t $value %"
“If you stuff yourself full of poems, essays, plays, stories, novels, films, comic strips, magazines, music, you automatically explode every morning like old faithful. I have never had a dry spell in my life, mainly because I feed myself well, to the point of bursting. I wake early and hear my morning voices leaping around in my head like jumping beans. I get out of bed to trap them before they escape” ~ Ray Bradbury
Related PowerShell Cmdlets:
Get-CimInstance - Get a managed resource (storage, network, software etc).