Ich möchte gerne auslesen können, wieviel Traffic eine bestimmte Netzwerkkarte über einen längeren Zeitraum macht. Im Grunde brauche ich genau die Werte, die man für "Gesendet" und "Empfangen" sieht, wenn man bei einer Netzwerkverbindung auf "Status" klickt.
Ich habe bisher probiert:
.NET-Klasse System.Net.NetworkInformation.IPInterfaceStatistics mit Powershell verwenden.
Diese Klasse hat anscheinend die benötigten Eigenschaften, siehe
Allerdings weiß ich nicht, wie ich die Klasse richtig verwenden soll. Zunächst musste ich an einem Rechner von einem Kollegen testen, da die Klasse bei mir anscheinend nicht gefunden wird. .NET 4.5 ist installiert. Assembly ist laut MSDN "System", sollte also nicht das Problem sein?
[System.Net.NetworkInformation.IPInterfaceStatistics] Der Typ [System.Net.NetworkInformation.IPInterfaceStatistics] kann nicht gefunden werden: Stellen Sie sicher, dass die Assembly, die diesen Typ enthält, geladen wird. Bei Zeile:1 Zeichen:54 + [System.Net.NetworkInformation.IPInterfaceStatistics] <<<<+ CategoryInfo : InvalidOperation: (System.Net.Netw...rfaceStatistics:String) [], RuntimeException+ FullyQualifiedErrorId : TypeNotFound
Bei einem anderen Rechner konnte ich obige Zeile zwar ohne Fehler abschicken, konnte damit aber nichts anfangen. Mit New-Object ließ sich kein Objekt erstellen, "Konstruktor nicht gefunden". Ist das eine statische Klasse? Bei MSDN steht ein Konstruktor angegeben.
Wie verwendet man diese Klasse richtig, sodass ich auf die entsprechenden Properties zugreifen kann?
Daten per WMI auslesen
Hier die gängige Antwort die ich immer wieder zu diesem Thema finde. Lediglich die Daten pro Sekunde, die Klasse enthält keine Gesamtwerte.
Vielleicht gibt es doch eine Lösung per WMI?$computer = "LocalHost" ;
$namespace = "root\CIMV2" ;
$Tcpip_NI = Get-WmiObject -class Win32_PerfRawData_Tcpip_NetworkInterface -computername $computer -namespace $namespace ;
$Tcpip_NI | Select BytesReceivedPersec,BytesSentPersec,BytesTotalPersec ;
Per netsh:
$netsh_interface_stats = netsh interface ip show interface ; $netsh_interface_stats | Select-string "In Octets" ; $netsh_interface_stats | Select-string "Out Octets" ;
Ich verstehe nicht, was mit
Select-string "In Octets"
bezweckt werden soll? Es erscheint keine Ausgabe.
Per netstat -e
Gibt zwar entsprechende Werte zurück, diese sind aber viel zu groß. Ich wüßte gerne, was hier alles mit eingerechnet wird. Wenn ich beispielsweise 600MB übertrage, ist der Wert für "Gesendet" danach einige GB höher.
Perfmon
Keine entsprechenden Daten vorhanden
Was habt ihr sonst für Ideen? Ich möchte ungern ein größeres Programm zur Netzwerküberwachung laufen lassen, da die Werte später für mehrere Produktivsysteme erfasst werden sollen. Es muss doch möglich sein, genau diese Werte zu bekommen, die im Status der Netwerkverbindung angezeigt werden.