2015-12-03 11 views
6

kann ich die Netzwerkkarte Zähler Beispiel Namen wie so erhalten:Powershell: Counter Instanzname für bestimmte Netzwerkkarte

Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface 

, die für Namen so etwas wie dieses gibt:

Intel[R] Ethernet Controller X540-AT2 
Intel[R] Ethernet Controller X540-AT2 _2 
Intel[R] Ethernet Controller X540-AT2 _3 
Intel[R] Ethernet Controller X540-AT2 _4 

ich das bekommen kann (aktiviert) Netzwerkkarten wie so:

Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2" 

, die für Namen etwas wie folgt ausgibt:

Es gibt jedoch keine Eigenschaften zurückgegeben von beiden Aufruf, die direkt mit dem anderen übereinstimmen.

Der nächstgelegene ist der Name Win32_NetworkAdapter, die ähnlich an den Zähler Name ist, aber geändert wurde, ungültige Zeichen zu entfernen und ändern andere (* 1) und hat eine Art von Instancing los (* 2).

(* 1) = Nur beim Testen werden runde Klammern ("()") für die eckigen Klammern ("[]") und Escape-Hashes für Unterstriche getauscht.

(* 2) = Bei einer Maschine mit vier Netzwerkadapter,

Meine Frage ist: Wie kann ich direkt einen für die andere Karte, ohne auf meinem Mutmaßungen Text Ersatz angewiesen?

Edit:
Wenn Sie versuchen, dies auf einer VM zu testen, müssen Sie mindestens zwei Netzwerkkarten hinzuzufügen.

Hier ist der entsprechende Ausgang von einem Windows Server 2012 R2 VM läuft auf Hyper-V:

Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | select Name 

Name 
---- 
Microsoft Hyper-V Network Adapter 
Microsoft Hyper-V Network Adapter _2 
Microsoft Hyper-V Network Adapter _3 


Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2" | select Name 

Name 
---- 
Microsoft Hyper-V Network Adapter #2 
Microsoft Hyper-V Network Adapter 
Microsoft Hyper-V Network Adapter #3 

Bearbeiten wieder:

String Ersatz direkt aus ist, und nur auf nicht funktioniert Server, die NIC-Teaming verwenden.

Hier ist ein Beispiel von einem Server, der NIC-Teaming ist mit:

Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2" | select name 

Name 
---- 
Intel(R) 82575EB Gigabit Network Connection 
Intel(R) 82575EB Gigabit Network Connection 
Intel(R) 82576 Gigabit Dual Port Network Connection 
Intel(R) 82576 Gigabit Dual Port Network Connection 
TEAM : PublicTeam 
TEAM : PrivateTeam 


Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | select Name 


Name 
---- 
TEAM : PrivateTeam - Intel[R] 82575EB Gigabit Network Connection 
TEAM : PublicTeam - Intel[R] 82575EB Gigabit Network Connection _2 
TEAM : PrivateTeam - Intel[R] 82576 Gigabit Dual Port Network Connection 
TEAM : PublicTeam - Intel[R] 82576 Gigabit Dual Port Network Connection _2 

* Bearbeiten Sie die dritte/vierte: *

Noch eine andere Maschine, die nicht einmal die oben etwas zu erraten Namensgebung verwenden ist planen.

Dies ist auf Windows Server 2012 R2:

Get-WmiObject Win32_PerfRawData_Tcpip_NetworkInterface | select Name 

Name 
---- 
Intel[R] 82576 Gigabit Dual Port Network Connection 
Intel[R] 82576 Gigabit Dual Port Network Connection _2 
Intel[R] 82576 Gigabit Dual Port Network Connection _3 
Intel[R] 82576 Gigabit Dual Port Network Connection _4 

Get-WmiObject win32_networkadapter -filter "netconnectionstatus=2" | select Name 

Name 
---- 
Intel(R) 82576 Gigabit Dual Port Network Connection 
Intel(R) 82576 Gigabit Dual Port Network Connection 
Microsoft Network Adapter Multiplexor Driver 
Microsoft Network Adapter Multiplexor Driver #2 

Beachten Sie, dass in diesem Fall ist es das Microsoft Network Adapters ist, die tatsächlich IPs haben.

Obwohl in diesem Szenario die passenden Leistungsindikatoren auf dem Adapter perf Zähler tatsächlich funktionieren (Schnittstelle in anderen Situationen zuverlässiger scheint)

Edit 5:

Menschen halten machen Kommentare wie „Es ist ähnlich wie dieser andere Thread: "

Wie bereits in Bearbeitungen oben erläutert, gebe ich Beispiele, wo diese Art von Text fudging nicht funktioniert.

+0

Ich denke nicht, können Sie 'Win32_PerfRawData_Tcpip_NetworkInterface' Karte zu' win32_networkadapter' weil es keinen gemeinsamen Schlüssel gibt ... aber du könntest dich mit 'Netzwerkadapterkonfiguration' in Verbindung setzen ... es hängt nur davon ab, welche Eigenschaften der NIC du sehen willst ... auch welche Version von Powershell benutzt du? – Kiran

+0

Ich brauche den tatsächlichen Leistungsindikator-Namen - wie ich dorthin komme ist egal, solange ich es zurück zu '' win32_networkadapter'' (oder der '' win32_networkadapterconfiguration'') - ich benutze die Informationen von diesem Um zu ermitteln, welcher Perf-Zähler zu welchem ​​Netzwerk auf dem System gehört (dmz, privat usw.), wird dieser Perf-Zähler-Instanzname an eine andere App übergeben. Ich sehe nicht, wie die Config-Tabelle hilft. –

+0

Nicht sicher, welches Betriebssystem Sie verwenden, aber auf meinem Windows 10-Rechner und eine Win 2012 virtuelle Maschine geben beide Klassen übereinstimmende Namen, so dass ich Angst habe, kann ich das nicht testen .. – Kiran

Antwort

0

Ich konnte die Beziehung anders als diesen Namen nicht finden.

So wie ich nicht alle Ersatz caracters vorstellen kann Instore ich einen kanonischen Namen:

$cananicalName1 = "Intel(R) Ethernet Controller X540-AT2 #4" -replace '[^A-Za-z0-9]','_' 
$cananicalName2 = "Intel[R] Ethernet Controller X540-AT2 _4" -replace '[^A-Za-z0-9]','_' 

beide gibt:

Intel_R__Ethernet_Controller_X540_AT2__4 
+0

Leider hilft Textersatz nicht. Ich habe eine Box gefunden, in der das überhaupt nicht funktioniert. Ich werde die Frage mit weiteren Informationen bearbeiten. –