2016-07-23 1 views
-1

Ich versuche, Netzwerkstatistiken für einen bestimmten Adapter mit Powershell zu überwachen. Der Überwachungsprozess selbst funktioniert gut und basiert auf Get-WmiObject -class Win32_PerfFormattedData_Tcpip_NetworkInterfaceNetzwerkstatistik für einen Adapter mit der IP-Adresse

Mein Problem ist es, die richtige Schnittstelle zur Überwachung durch die IP-Adresse zu wählen. Der obige Code enthält diese Informationen nicht, daher habe ich begonnen, andere Befehle zu verwenden, die die Adresse enthalten, und ich habe versucht, eine Beziehung zu finden. Aber momentan ohne Erfolg.

Kein Index, Name, Beschreibung oder andere Zeichenfolgen sind eindeutig. Ich bin mir ziemlich sicher, dass da etwas sein muss, aber ich kann es nicht finden. :/

Vielen Dank im Voraus

EDIT

Ich habe eine andere post hier mit exaclty dem gleichen Problem gefunden. Es ist ein paar Jahre alt, aber immer noch ohne eine zuverlässige Lösung.

EDIT 2

ich eine workarround erstellt haben direkt die Win32-Klasse ohne Zugriff. Wie auch immer, ich bin immer noch an einer Lösung für meine erste Frage interessiert.

$myIp = "192.168.1.101" 

$myCurrentBytes = Get-NetAdapterStatistics | Where-Object -Property InterfaceAlias -eq ` 
       (Get-NetIPAddress | Where-Object -Property IPAddress -eq $myIp | Select-Object -Property InterfaceAlias).InterfaceAlias ` 
       | Select-Object -Property ReceivedBytes,SentBytes 

$myCurrentKbytesDown = [math]::Round($myCurrentBytes.ReceivedBytes/1024) 
$myCurrentKbytesUp = [math]::Round($myCurrentBytes.SentBytes/1024) 

Antwort

0

Sie müssen Filter verwenden.

hier:

$SourceIP = '192.168.100.1' #specify IP you want 
$Name = Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Where { $_.IPAddress -contains $SourceIP } | Select -ExpandProperty Description 
Get-WmiObject -class Win32_PerfFormattedData_Tcpip_NetworkInterface -Filter "Name='$Name'" 
+0

Wenn Sie einen zweiten Adapter des gleichen Typs hinzufügen, erhalten Sie z. 'Realtek PCIe GBE Familiencontroller _2' von AdapterConfiguration und' Realtek PCIe GBE Familiencontroller # 2' von NetworkInterface. – user218594

+0

Nicht sicher, dass ich dich verstehe. Warum sollten Sie zwei Schnittstellen mit derselben IP-Adresse einrichten? –

+0

Ich möchte nicht die gleiche IP auf mehreren Schnittstellen verwenden. Ihr Code verwendet die Beschreibung/den Namen, um den Adapter zu identifizieren, aber er muss auch auf Computern mit mehreren Adaptern des gleichen Typs funktionieren. Dann beginnt Windows, jedem Adapter eine nachgestellte Zahl hinzuzufügen, und die Syntax ist nicht die gleiche. – user218594

0

Das ist für mich funktioniert unter Windows 2012:

$myIp = "192.168.100.1" 

$myCurrentBytes = Get-NetIPAddress $myIp | Get-NetAdapter | Get-NetAdapterStatistics | Select-Object -Property ReceivedBytes,SentBytes 

$myCurrentKbytesDown = [math]::Round($myCurrentBytes.ReceivedBytes/1024) 
$myCurrentKbytesUp = [math]::Round($myCurrentBytes.SentBytes/1024) 

Grundsätzlich finden die IP-Adresse und dann Rohr, die den Adapter und dann Rohr zu erhalten, die bekommen Adapterstatistik.

Verwandte Themen