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:
Was mir also fehlt ist der Inhalt von "Get_NIC_Name.cmd" - irgendwelche ideen?
/EDIT
Die Lösung:
lg,
Slainte
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121229
Url: https://administrator.de/contentid/121229
Ausgedruckt am: 23.11.2024 um 08:11 Uhr
8 Kommentare
Neuester Kommentar
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
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
Servus,
*grübel*
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*
*grübel*
netsh interface ip show config |find """"
ergebnis wäre bei mir /deutsch:Konfiguration der Schnittstelle ""LAN-Verbindung""
auf dem englischen Server W2k3Configuration 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*
@Timo
Laptop mit aktiviertem WLan, deutsches XP SP3:
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?
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:Konfiguration der Schnittstelle ""LAN-Verbindung""
Konfiguration der Schnittstelle ""{766D7AAE-8A10-40A6-90B2-0326DE2C69AD}"" <- VPN
Konfiguration der Schnittstelle ""Drahtlose Netzwerkverbindung""
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 wirdKonfiguration der Schnittstelle ""Local Area Connection""
Konfiguration der Schnittstelle ""{3437B271-148A-4EE6-B1A4-E687262CC4C9}"" <- VPN
Konfiguration der Schnittstelle ""Wireless Network Connection""
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?
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!"
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
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
Moin, ich weiß nicht ob ich zu spät bin, aber ich verrate dir eine Möglichkeit den Namen über Batch mittels wmic auszulesen.
Oracle Corporation und VMWare Inc. umauszuschließen das ein virtueller Netzwerkadapter ausgelesen wird. Dies muss ggf. angepasst werden.
%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.