Monitorowanie wykorzystania łącza w PowerShell


 


W codziennej pracy bywa, że musimy sprawdzić jak wygląda wykorzystanie łącza sieciowego, a konkretnie z jakiej obecnie przepustowości korzysta nasz serwer. Jeśli z jakiegoś powodu (np. dość ostrej polityce firmy zabraniającej instalowania ‚zbędnego’ oprogramowania) nie możemy skorzystać z żadnego „third-party” ułatwiającego monitorowanie wykorzystania łącza, z pomocą przychodzi nam PowerShell :) (pamiętacie? – już mierzyliśmy za jego pomocą moc sygnału Wi-Fi)
PowerShell jak wiecie z wcześniejszych wpisów, to doskonałe remedium na wszelakie trudne sytuacje, więc nauka skryptowania w tym języku jest bardzo uzasadniona.
Kiedy zarzucono mi na głowę problem zmierzenia w jaki sposób dwa serwery utylizują łącze sieciowe, postanowiłem użyć nieco połączonych mocy WMI i PSH. I tak po krótkiej, acz wytężonej pracy powstał taki oto sympatyczny skrypt:

while ($true)
{
 Clear
 Get-WmiObject -class Win32_PerfFormattedData_Tcpip_NetworkInterface -ComputerName $args[0] | Select Name, CurrentBandWidth, BytesTotalPersec  | Format-Table @{Expression={$_.Name}; Label="NIC" }, @{Expression={$_.CurrentBandWidth/ 1000000 }; Label="MBit/s"}, @{Expression={$_.BytesTotalPersec/ 1000000 }; Label="MBit/s"}
 Get-WmiObject -class Win32_PerfFormattedData_Tcpip_NetworkInterface -ComputerName $args[1] | Select Name, CurrentBandWidth, BytesTotalPersec  | Format-Table @{Expression={$_.Name}; Label="NIC" }, @{Expression={$_.CurrentBandWidth/ 1000000 }; Label="MBit/s"}, @{Expression={$_.BytesTotalPersec/ 1000000 }; Label="MBit/s"}
 Start-Sleep -Seconds 2
}

Używamy go na własnym komputerze podając jako parametrów nazw serwerów:

NetworkUsage.ps1 nazwa1 nazwa2

jeśli chcemy tylko jeden serwer, kasujemy „powtórzoną” linię. Jeśli chcemy manipulować częstotliwością „próbkowania” modyfikujemy linijkę z Start-Sleep.
Znacie jakiś prostszy sposób na monitorowanie wykorzystania łącza na zdalnych serwerach?


Podobne Tematy: