ghost-worker
Goto Top

Name einer Netzwerkverbindung anhand dessen Adapterbeschreibung auslesen

Hallo zusammen,

habe wieder mal ein kleines Problem bei dem ich nicht weiter komme.

Ich möchte eine Netzwerkkarte per Batch parametrieren.
Generell bekomme ich das per "netsh" und dem entsprechenden Namen der Verbindung hin.
Allerdings ist es in dem Fall so, dass die Beschreibung immer gleich ist, aber der Name der Netzwerkverbindung variert.

Daher war meine Idee alle aktiven Karten auslesen um zu sehen ob die entsprechende dabei ist und diese dann im zweiten Durchlauf bzw. deren Namen auslesen zu können.

Das erste Auslesen habe ich über ein Skript, dass hier bereits schon vorgestellt wurde hinbekommen.

@Echo Off & Setlocal
Set "Log=F:\Active_cards.txt"  
Echo Active card adapter:>"%Log%"  
For /f "tokens=2 delims=:" %%i In ('ipconfig /all^|findstr "Beschreibung"') Do Set "Name=%%i" & Call :WriteCards  
Goto :EOF

:WriteCards
echo %Name:~1%>>"%Log%"  

In der Log-Datei stehen nun alle Adapter, nur ich weiß nicht wie ich über die Beschreibung an den Namen der Verbindung komme.
Auf dem Bild ist die Beschreibung des Adapters "Netgear ..."

f719b0959068b9173705b48c57c29584

Über diese Beschreibung will ich nun, dass der Name der Verbindung - in dem Fall "WLan - Karte" ausgegeben wird.

Hat da jemand von euch eine Idee?

Danke schon mal ...
GW

Content-Key: 190023

Url: https://administrator.de/contentid/190023

Printed on: April 25, 2024 at 18:04 o'clock

Member: Muehlmann
Muehlmann Aug 22, 2012 at 17:52:41 (UTC)
Goto Top
Start -> Systemsteuerung -> Netzwerk- und Freigabecenter -> Adaptereinstellungen ändern -> Rechtsklick auf den gewünschten Adapter -> Umbenennen.

oder ich hab dein vorhaben falsch verstanden ;)
Member: Ghost-Worker
Ghost-Worker Aug 22, 2012 at 18:04:15 (UTC)
Goto Top
Hi Muehlmann,

du hast es nicht falsch verstanden - habe nur den Hintergrund vergessen.

Ich möchte das gerne über ein Skript abwickeln, da ich dieses dann auf einem Remoterechner im Netzwerk ausführen will um so die Netzwerkkarte bzw. diese Spezielle zu parametrieren.

Die Anderen Karten kann ich, wie oben beschrieben, mit netsh ansprechen nur leider diese nicht, da der Verbindungsname varieren kann.

Danke
GW
Member: brammer
brammer Aug 22, 2012 at 18:07:55 (UTC)
Goto Top
Hallo,

handelt es sich immer um den selben Hersteller der WLAN KArte?
Dann könntest du die MAC Adresse auslesen und verwenden.

brammer
Member: Ghost-Worker
Ghost-Worker Aug 22, 2012 at 18:17:38 (UTC)
Goto Top
Hallo,

nein - es ist ein anderer Hersteller und das oben ist nur ein Beispiel.

Es handelt sich um eine Dual-Gigabitkarte.
Die beiden Netzwerkanschlüsse werden zu einen virtuellen 2Gbit-Anschluss zusammengefasst, den es in diesem Fall zu parametrieren gilt.

Das Zusammenfassen geht über die Herstellersoftware automatisch - nur die Parametrierung in diesem Fall nicht.
Deswegen auch der nie Gleiche Verbindungsname, da in dem Rechner noch 4 andere Netzwerkadapter verbaut sind.
Und da möchte ich ansetzen um dies zu automatisieren über ein Skript.

Danke
GW
Mitglied: 108012
108012 Aug 22, 2012 updated at 20:11:25 (UTC)
Goto Top
Hallo Ghost-Worker,

ich hab es diesmal wirklich glaub mir!!!

Mit dem Programm hat wohl nicht so richtig funktioniert, aber nun:

Diese Workstations mit den Dual GB Lan Karten sind doch zu einem LAG oder was auch immer zusammen geschlossen und hängen an einem Switch und Du willst nicht alles zu Fuß erledigen, richtig?

Du gehst an den Switch (mittels Verwaltungssoftware) und schaust einfach dort nach, mit welchen zwei Karten immer ein nennen wir es mal LAG aufgesetzt wurde denn ein LAG hat nun mal immer zwei Enden, dann schaust Du mit dem Programm nach welchen Hostnamen diese Rechner haben und welche IP´s sie besitzen und dann gehst Du noch einmal an das Script um für diesen Adapter die Parametrierung zusetzen, auch wenn
mehrere Karten in der Workstation verbaut sind, macht das ja jetzt nichts mehr aus, denn Du hast ja nun die MAC adressen und die sind/sollten nun mal einmalig sein.

Ich hoffe das war was diesmal.

P.S.

Ein netstat -r zeigt Dir die Routingtabelle der Workstation an, aber diese beginnt immer mit der Schnittstellenliste!
Adaptername und Mac Adresse

Routingtabelle
Schnittstellenliste
0x1 ...00 1b 21 70 ec c7 ...... Intel(R) PRO/1000 GT Desktop Adapter

Ein zweiter Befehl Hostname bringt Dir den Hostnamen derselben Workstation

nun muss das Script das alles nur noch in eine Datei schreiben und an Dich oder Deinen PC zurückschicken.
Member: bastla
bastla Aug 22, 2012 updated at 21:35:38 (UTC)
Goto Top
Hallo Ghost-Worker!

Versuch's mal damit:
@echo off & setlocal
set "Name=NETGEAR"  

set "G=%temp%\GetID.vbs"  
>"%G%" echo Set Items=GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_NetworkAdapter Where Name Like '%%%Name%%%'"):For Each Item In Items:WScript.Echo Item.NetConnectionID:Next  
for /f "delims=" %%i in ('cscript //nologo "%G%"') do set "ID=%%i"  
del "%G%"  
echo %ID%
Angegeben werden muss nur ein eindeutiger Bestandteil des Namens - falls es dennoch mehrere Treffer gibt, wird allerdings nur der letzte als Ergebnis geliefert ...

Grüße
bastla
Member: Ghost-Worker
Ghost-Worker Aug 24, 2012 at 15:56:53 (UTC)
Goto Top
@bastla:

Danke für dein Script. Hat mich weit voran gebracht.
Allerdings steh ich bei einem Punkt auf dem Schlauch.

Ich habe, wie auf dem Bild zu sehen ist
a72b59c0431e04a1107e8be7443a18eb

drei Adapter mit TEAM : Team .
Der Adapter, der nur als TEAM : Team ohne Angabe des Anschlusstypes (Intel(R) Pro ...) ist/war der Kandidat um den es geht/ging.
Dieser entsteht durch den Zusammenschluss der beiden Anderen.

Nun zum Schlauch dazu ...
Wenn ich das Script von bastla nehme, dann findet er den Adapter unter der Angabe von set "Name=Intel". Anders nicht.

@echo off & setlocal
set "Name=Intel"  

set "G=%temp%\GetID.vbs"  
>"%G%" echo Set Items=GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_NetworkAdapter Where Name Like '%%%Name%%%'"):For Each Item In Items:WScript.Echo Item.NetConnectionID:Next  
for /f "delims=" %%i in ('cscript //nologo "%G%"') do set "ID=%%i"  
del "%G%"  
echo %ID%

Was ich jetzt nicht verstehe, warum er den Adapter nur mit Intel findet und nicht per TEAM : Team#0!

Ansonsten funktioniert Alles so wie es soll.
Es wäre nett wenn hier jemand noch zu diesem "Problem" eine Idee hätte.
Mir geht es nun nur noch ums Verständnis.

Danke
GW
Member: bastla
bastla Aug 24, 2012 at 19:53:09 (UTC)
Goto Top
Hallo Ghost-Worker!

Leider kann ich Dir nicht sagen, warum "TEAM : Team#0" nicht gefunden wird - gesucht wird jedenfalls nach einem zum Inhalt der Variablen passenden Teilstring. Wenn Du genau nach %Name% suchen willst (also nicht nur nach Namen, in denen %Name% enthalten ist), müsste Zeile 5 so aussehen:
>"%G%" echo Set Items=GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_NetworkAdapter Where Name = '%Name%'"):For Each Item In Items:WScript.Echo Item.NetConnectionID:Next
Grüße
bastla
Member: Ghost-Worker
Ghost-Worker Aug 25, 2012 at 05:23:22 (UTC)
Goto Top
Hallo bastla,

danke für deine Hilfe.
Ich habe mir auch schon überlegt die "SQL-Abfrage" dahingehend so umzubauen.

So passt es nun!

Ein Dank an Alle für die gute und schnelle Unterstützung.

Ich mach hier nun das Licht aus!

Danke
GW