slaintemhath
Goto Top

Name der aktiven Netzwerkkarte(n) ermiteln

Umgebung: Active Directory, Windows 2000/XP/Vista Clients

Moin,

um eine globale Umstellung der DNS und WINS Einstellungen auf den Clients soll per netsh-Script zu realisieren, müsste ich den/die Namen der aktiven Netzwerkkarten per Batch ermitteln und in eine Datei oder Umgebungsvariable schreiben. Zusätzliche Utilities sollen nach Möglichkeit nicht verwendet werden.

Das Knifflige dabei ist: Die Clients sind in Deutsch, Englisch oder Tschechisch installiert - d.h. ein Parsen der ipconfig /all Ausgabe möchte ich vermeiden. Zusätzlich hat sicher auch der ein oder andere Spassvogel die Netzwerkverbindung umbenannt.

So stell ich mir das in etwa vor:
Get_NIC_Name.cmd > c:\NICs.txt
for /F %%a in (c:\NICs.txt) do call :SetParam "%%a"  
goto EOF

:SetParam 
netsh interface ip set dns name="%1" 10.4.10.3 static  
netsh interface ip set wins name="%1" 10.4.10.3 static  
goto EOF

Was mir also fehlt ist der Inhalt von "Get_NIC_Name.cmd" - irgendwelche ideen?

/EDIT

Die Lösung:
netsh interface show config | find """" > c:\NICs.txt  

lg,
Slainte

Content-ID: 121229

Url: https://administrator.de/forum/name-der-aktiven-netzwerkkarten-ermiteln-121229.html

Ausgedruckt am: 24.12.2024 um 20:12 Uhr

Iwan
Iwan 24.07.2009 um 09:30:01 Uhr
Goto Top
hallo,

ich habe nicht direkt eine Lösung, aber vielleicht einen Ansatz
in der Registry stehen unter
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}
die LAN-Verbindungen und in den jeweiligen Schlüsseln unter "Connection" existiert ein REG_SZ "Name"
dort steht dann z.B. "LAN-Verbindung" oder "Local Area Connection" drin
evtl. kannst du diese ja auslesen und dann diese in einer Datei speichern
60730
60730 24.07.2009 um 11:58:31 Uhr
Goto Top
Servus,

*grübel*

netsh interface ip show config |find """"
ergebnis wäre bei mir /deutsch:
Konfiguration der Schnittstelle ""LAN-Verbindung""
auf dem englischen Server W2k3
Configuration for Interface "Name"

Ergo - solltest du "so" mit einem delims " den Namen finden können.

Wobei der Ansatz von Iwan auch was hat, denn alle Systeme haben doch die gleichen Nic und damit identische SIDs in der Reg?

Gruß

wobei der "Zufall" bei mir natürlich genau die Daten ausgespuckt hat, die ich oben eingepastet habe - deutsch ""Name"" - englisch "Name" ?*wtf*
Iwan
Iwan 24.07.2009 um 12:15:34 Uhr
Goto Top
@Timo
Laptop mit aktiviertem WLan, deutsches XP SP3:
C:\>netsh interface ip show config |find""""
Konfiguration der Schnittstelle ""LAN-Verbindung""
Konfiguration der Schnittstelle ""{766D7AAE-8A10-40A6-90B2-0326DE2C69AD}"" <- VPN
Konfiguration der Schnittstelle ""Drahtlose Netzwerkverbindung""
Laptop mit aktiviertem WLan, englisches XP SP3 mit deutschem MUI:
C:\>netsh interface ip show config |find""""
Konfiguration der Schnittstelle ""Local Area Connection""
Konfiguration der Schnittstelle ""{3437B271-148A-4EE6-B1A4-E687262CC4C9}"" <- VPN
Konfiguration der Schnittstelle ""Wireless Network Connection""
ich hab einen VBS-Schnipsel, der die Reg-Keys ausliest, um dann den Wert zu setzen, das das LAN-Icon in der Taskleiste gezeigt wird
das könnte ich sicherlich umschreiben, um ein Commadprompt zu öffnen, das dann die Werte setzt
evtl. kann man auch den Wert "IpCheckingEnabled" abfragen, da er scheinbar nur bei Netzwerkkarten vorhanden ist, die man auch Netzwerkverbindungen sieht
dann könnte man den Namen der Verbindung auslesen und per VBS an ein CMD-Prompt weitergeben

@autor
darf es denn auch VBS sein?
SlainteMhath
SlainteMhath 24.07.2009 um 13:02:24 Uhr
Goto Top
Hi,

@Timo
netsh interface ip show config |find """"
Danke - das macht genau das was ich brauche... war wohl zu naheliegend um selber drauf zukommen face-smile

@Iwan:
An deinem VBS Schnipsel wäre ich trotzdem interessiert face-smile

lg,
Slainte
Iwan
Iwan 24.07.2009 um 13:14:55 Uhr
Goto Top
erfolgreich getestet auf deutschem und englischem Win XP SP3:
Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."  
strCheckName = "IpCheckingEnabled"  
strValueName = "Name"  
Set WShell = CreateObject("WScript.Shell")  
Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")  

strKeyPath = "SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}"  
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
 
For Each subkey In arrSubKeys
   strRegKey = "SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\"  
   strKeyPath = strRegKey & subkey & "\Connection"  
   oReg.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strCheckName, strValue
   If strValue <> "" Then  
	oReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strValue
	Wscript.Echo strValue
	BefehlDNS = "netsh interface ip set dns name=" & Chr(34) & strValue & Chr(34) &" addr=10.4.10.3 source=static register=PRIMARY"  
	BefehlWINS = "netsh interface ip set wins name=" & Chr(34) & strValue & Chr(34) & " addr=10.4.10.3 source=static"  
	'Wscript.Echo BefehlDNS  
	WShell.run BefehlDNS
	'Wscript.Echo BefehlWINS  
	WShell.run BefehlWINS 
   End If
Next
Wscript.Echo "Done!"  
TorstenK
TorstenK 13.11.2009 um 10:59:27 Uhr
Goto Top
Moin,

wunderbares Skript, tut genau das was ich gesucht habe...aber leider nur unter WindowsXP/2003 (Vista hab ich nicht getestet).

Irgendjemand eine Idee wie das Script unter Windows7 zum laufen zu bewegen ist?

Gruß

Torsten
Iwan
Iwan 13.11.2009 um 11:45:51 Uhr
Goto Top
hallo,

kommt eine Fehlermeldung oder was passiert?
leider habe ich kein Win7 hier, aber ich vermute mal, das die Einträge in der Registry anders aussehen oder der NETSH-Befehl anders aufgebaut ist

hier geht es weiter: Ermitteln des aktiven Netzwerkinterfaces
DuRi98
DuRi98 08.07.2017 um 16:12:31 Uhr
Goto Top
Moin, ich weiß nicht ob ich zu spät bin, aber ich verrate dir eine Möglichkeit den Namen über Batch mittels wmic auszulesen.

 %SystemDrive%
for /f "tokens=2 delims==" %%I in (  
    'wmic nic where "Manufacturer!=\"Oracle Corporation\" and PhysicalAdapter=true and NetEnabled=True and Manufacturer!=\"VMWare, Inc.\""   
	get NetConnectionID /format:list 2^>NUL'  
) do set interface=%%I

echo Netzwerkadapter ist: %interface%
 

Oracle Corporation und VMWare Inc. umauszuschließen das ein virtueller Netzwerkadapter ausgelesen wird. Dies muss ggf. angepasst werden.