erik87
Goto Top

Netzwerkeinstellungen ändern

Hallo Forumgemeinde,

Ich möchte mit Hilfe einer Batchdatei die kompletten Netzwerkeinstellungen ändern. habe schon bisschen gegooglet aber bin nicht so ganz fündig geworden.
Für die Ip und subnetzmaske hab ichs schon gefunden, aber der Rest???

das ganze soll dann in etwa so aussehen:

::-------------------------------------------------------------------------------------------
@echo off
cls
Set LName =Lan-Verbindung
Set IP = 000.000.000.000
Set Sub = 000.000.000.000
Set StandGate = 000.000.000.000
Set bevDNS = 000.000.000.000
set altDNS = 000.000.000.000

netsh interface ip set address name=LName static IP Sub
::-------------------------------------------------------------------------------------------

Aber wie geht das mit dem Rest?

Mein 2. Problem wäre das Auslesen der Namen aller Netzwerkverbindungen. Also "Lan-Verbindung"; "WLan-Verbindung" ... etc. und das dann am besten gleich in eine txt datei...

Es wäre auch schon wenn mir jemand dazu sagen könnte unter welchen Windowsversionen das läuft. Soll nämlich auf mehreren Rechnern laufen von Xp bis Windows 7.

Mit freundlichen Grüßen

Content-ID: 133359

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

Ausgedruckt am: 17.11.2024 um 01:11 Uhr

TsukiSan
TsukiSan 13.01.2010 um 14:01:36 Uhr
Goto Top
also, wenn du einmalig auf deinen clients folgenden Befehl durchlaufen läßt (XP)
netsh -c interface dump >C:\netzwerk.inf
dann hättest du erst mal alle Einstellungen mit Batch erfaßt.
mit
netsh -f C:\netzwerk.inf
kannst du das ganze wieder einlesen und setzen lassen.

Eine Möglichkeit!

Gruss
Tsuki
eTh0-R
eTh0-R 13.01.2010 um 14:20:02 Uhr
Goto Top
Hi,

hab so ne ähnliche Lösung auch in den letzen Tagen geschrieben und wollte die hier mal kund tun bevor es bastla & Biber lösen ;)

@echo off & setlocal
for /f "tokens=2,3" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp=%%i %%j  

Set LAN=%LANtmp::=%

Set /p IP=Bitte IP-Adresse eingeben:
Set /p SM=Bitte Subnetzmaske eingeben:
Set /p GW=Bitte Gateway eingeben:
Set /p DNS=Bitte DNS-Server eingeben:

netsh interface ip set address name="%LAN%" source=static addr=%IP% mask=%SM%  
netsh interface ip set address name="%LAN%" gateway=%GW% gwmetric=0  
netsh interface ip set dns name="%LAN%" source=static addr=%DNS%  

In jedem Fall vielen Dank an Biber und bastla für eure Lösungswege in anderen fällen; wenn ihr was zu ergänzen habt immer nur zu face-smile

Grüße
Marcel
exellent
exellent 13.01.2010 um 14:21:34 Uhr
Goto Top
Ich habe mir letztens da mal was gebastelt..Sollte für dich ja genau passend sein :

@ECHO OFF


REM ### DIE UNTENSTEHENDEN EINTRAEGE BITTE ENTSPRECHEND ANPASSEN ###

SET DESC="LAN-Verbindung"  
SET IP=192.168.x.x
SET NM=255.255.255.0
SET GW=192.168.x.x
SET DNS0=192.168.x.x
SET DNS1=192.168.x.x




REM ### HIER NICHTS ANRUEHREN !!! ###

REM #################################
REM # Beispiel: 		    #
REM # DESC="LAN-Verbindung" 	    #  
REM # IP=192.168.200.100 	    #
REM # NM=255.255.255.0 		    #
REM # GW=192.168.200.254 	    #
REM # DNS0=192.168.201.104 	    #
REM # DNS1=192.168.201.106          #
REM #################################




REM ### HIER ERST RECHT NICHTS ANRUEHREN !!! ###

REM ### Setzen der statischen IP-Adresse und der Subnet-Mask ###
echo Setze statische IP %IP% ...
netsh interface ip set address name=%DESC% source=static addr=%IP% mask=%NM%
REM ### Setzen des Gateways ###
echo Setze Gateway %GW% ...
netsh interface ip set address name=%DESC% gateway=%GW% gwmetric=0
REM ### Setzen des Primären DNS_Servers ###
echo Setze primaeren DNS-Server %DNS0% ...
netsh interface ip set dns name=%DESC% source=static addr=%DNS0% register=PRIMARY
REM ### Setzen des Sekundären DNS_Servers ####
echo Setze sekundaeren DNS-Server %DNS1% ...
netsh interface ip add dns name=%DESC% addr=%DNS1% index=2
echo Netzwerkkonfiguration beendet!
ping localhost -n 3 >NUL
echo Aktuelle Netzwerkeinstellungen:
ipconfig /all
ping localhost -n 5 >NUL
TsukiSan
TsukiSan 13.01.2010 um 14:25:53 Uhr
Goto Top
verlangt ihr hier vom client nicht zu viel?
Naja, ich will ja nicht nörgeln! Eure Scripte gefallen mir persönlich sehr gut.

Gruss
Tsuki
TheDarkLord
TheDarkLord 13.01.2010 um 14:59:00 Uhr
Goto Top
Hallo face-smile

Und wie würde ich die Einstellungen auf "Automatisch" setzen, also von DHCP zuweisen lassen?

Gruß Dark
erik87
erik87 13.01.2010 um 15:07:03 Uhr
Goto Top
hey, erstmal danke. Das hilft mir schon Riesen weiter, aber:

Wie stelle ich den DNS-server auf automatisch beziehen?
Wie kann ich alle Schnittstellen auslesen?
Und in wie Weit ist das zu den unterschiedlichen Windowsversionen kompatibel?

und mal so nebenbei, kann ich mit Batch auch abfragen, ob netze Vorhanden sind und ggf. damit verbinden???
eTh0-R
eTh0-R 13.01.2010 um 15:15:44 Uhr
Goto Top
Zitat von @erik87:

Wie stelle ich den DNS-server auf automatisch beziehen?
netsh interface ip set dns name="%LAN%" source=dhcp  
Wie kann ich alle Schnittstellen auslesen?
ipconfig /all
Mit Umleitung in eine Datei...
ipconfig /all > ipconfig.txt
Und in wie Weit ist das zu den unterschiedlichen Windowsversionen kompatibel?
Geht auch unter Vista & 7 ... muss dann aber auch als Admin ausgeführt werden.

Und bedenke: Wenn du die Variable fest deklarierst als "Lan-Verbindung" geht des recht bald schief.
erik87
erik87 13.01.2010 um 15:20:33 Uhr
Goto Top
warum sollte das schief gehen?
eTh0-R
eTh0-R 13.01.2010 um 15:24:31 Uhr
Goto Top
Du wendest das Script an nem PC an wo der USER die Verbindung in "KILLER NIC" umbenannt hat....
und schon stehst aufm Schlauch ;)
erik87
erik87 13.01.2010 um 15:29:49 Uhr
Goto Top
Also, das versteh ich nicht ganz. Gibt es schwerwiegende fehler wenn es den namen nicht gibt?

ich rufe die batch aus nem anderen Programm auf und der User gibt nichts ein. Deswegen will ich ja vorher auslesen, welche verbindungen zur verfügung stehen damit er dann durch nen klick wählen kann...
TheDarkLord
TheDarkLord 13.01.2010 um 15:33:16 Uhr
Goto Top
Wenn die Lan-Verbindung "Killer" heisst und in der Batch "Lan", dann können die Einstellungen nicht gesetzt werden.
Der Name ist sozusagen die Hausnummer von dem Interface. Um die Einstellungen zu setzen, muss die Batch ja erstmal "wissen", welches Interface sie "bearbeiten" soll.

Nachtrag:
Das selbe Prinzip: Wenn Du mittels Batch die Datei "Hallo.txt" nach c: kopieren möchtest, schreibst du "copy Hallo.txt c:\".
Allerdings geht das nur, wenn die Datei auch "Hallo.txt" heisst und nicht "Blablubb.xls" - verstehst Du was ich meine?

Gruß Dark
TheDarkLord
TheDarkLord 13.01.2010 um 15:37:55 Uhr
Goto Top
Zitat von @eTh0-R:
Du wendest das Script an nem PC an wo der USER die Verbindung in "KILLER NIC" umbenannt hat....
und schon stehst aufm Schlauch ;)

@ erik87: Eine mögliche Lösung dafür wäre:
  1. Du lässt den Benutzer den Namen der Netzwerkverbindung eingeben
  2. Du "fragst" den Namen der Verbindung ab.

Nachtrag zu 2:
Das ist allerdings nicht ganz so einfach. Ein ipconfig /all > testdatei.txt liefert zwar die Ausgabe der vorhandenen Ethernetadapter, aber mittels Batch den "richtigen" auslesen ist schwierig. Wenn die Lan-Verbindung z.B. "Bla" heisst, die Wlan-Verbindung "Blubb" und eine Bluetooth-Lanverbindung "Blablubb", dann gibt es keine "Suchphrase" mit der man die Datei nach dem "richtigen" Adapter durchsuchen lassen könnte.

BASTLAAAAA, BIIIBEEER, hier müsst Ihr helfen xDD
erik87
erik87 13.01.2010 um 15:38:03 Uhr
Goto Top
ja schon klar, dachte das dann der rechner abstürzt oder so weil "KILLER NIC" ein spezielles register anspricht oder so.. also muss ich mit keinem Pc Absturz rechnen face-wink
erik87
erik87 13.01.2010 um 15:59:48 Uhr
Goto Top
Ja, das stellt aber kein Problem dar.

Danke euch allen. Funktioniert super. Den rest bekomme ich alleine hin face-wink
TheDarkLord
TheDarkLord 13.01.2010 um 16:03:38 Uhr
Goto Top
So, ich hab mal ein wenig gesucht, aber bis jetzt keine wirkliche Antwort darauf gefunden, wie man den Namen der Lan-Verbindung auslesen kann.

Aber hier habe ich mal das Script von exellent etwas angepasst:

@ECHO OFF

color 70

cls
echo\
echo Netzwerk konfigurieren
echo ----------------------
echo\
echo [1] Wlan-Einstellung Statisch
echo [2] Wlan-Einstellung DHCP
echo [3] LAN-Einstellung Statisch
echo [4] LAN-Einstellung DHCP
echo  Konfiguration abbrechen
echo\
set /P AUSWAHL=Bitte Auswahl treffen [1/2/3/0]:
IF /I "%AUSWAHL%"=="0" goto EXIT  
IF /I "%AUSWAHL%"=="1" goto STATISCH-WLAN  
IF /I "%AUSWAHL%"=="2" goto DHCP-WLAN  
IF /I "%AUSWAHL%"=="3" goto STATISCH-LAN  
IF /I "%AUSWAHL%"=="4" goto DHCP-LAN  



:STATISCH-WLAN

cls
echo \
echo Exakten Name der Wlan-Verbingung eingeben:
SET /p DESC
cls
SET IP=192.168.1.2
SET NM=255.255.255.0
SET GW=192.168.1.1
SET DNS0=192.168.1.1
::SET DNS1=192.168.x.x

echo\
echo Setze statische IP %IP%
netsh interface ip set address name=%DESC% source=static addr=%IP% mask=%NM%

echo Setze Gateway %GW%
netsh interface ip set address name=%DESC% gateway=%GW% gwmetric=0

echo Setze primaeren DNS-Server %DNS0%
netsh interface ip set dns name=%DESC% source=static addr=%DNS0% register=PRIMARY

::echo Setze sekundaeren DNS-Server %DNS1%
::netsh interface ip add dns name=%DESC% addr=%DNS1% index=2

echo Netzwerkkonfiguration abgeschlossen!
echo Konfiguration wird beendet...
ping localhost -n 3 >NUL

exit



:DHCP-WLAN

cls
echo \
echo Exakten Name der Wlan-Verbingung eingeben:
SET /p DESC
cls

echo\
echo Setze IP-Einstellungen auf DHCP
netsh interface ip set address name=%DESC% source=dhcp

echo Setzte DNS-Einstellungen auf DHCP
netsh interface ip set dns name=%DESC% source=dhcp% register=PRIMARY

echo Netzwerkkonfiguration abgeschlossen!
echo Konfiguration wird beendet...
ping localhost -n 3 >NUL

exit



:STATISCH-LAN

cls
echo \
echo Exakten Name der LAN-Verbingung eingeben:
SET /p DESC
cls
SET IP=192.168.1.20
SET NM=255.255.255.0
SET GW=192.168.1.1
SET DNS0=192.168.1.1
::SET DNS1=192.168.x.x

echo\
echo Setze statische IP %IP%
netsh interface ip set address name=%DESC% source=static addr=%IP% mask=%NM%

echo Setze Gateway %GW%
netsh interface ip set address name=%DESC% gateway=%GW% gwmetric=0

echo Setze primaeren DNS-Server %DNS0%
netsh interface ip set dns name=%DESC% source=static addr=%DNS0% register=PRIMARY

::echo Setze sekundaeren DNS-Server %DNS1%
::netsh interface ip add dns name=%DESC% addr=%DNS1% index=2

echo Netzwerkkonfiguration abgeschlossen!
echo Konfiguration wird beendet...
ping localhost -n 3 >NUL

exit



:DHCP-LAN

cls
echo \
echo Exakten Name der LAN-Verbingung eingeben:
SET /p DESC
cls

echo\
echo Setze IP-Einstellungen auf DHCP
netsh interface ip set address name=%DESC% source=dhcp

echo Setze DNS-Einstellungen auf DHCP
netsh interface ip set dns name=%DESC% source=dhcp% register=PRIMARY

echo Netzwerkkonfiguration abgeschlossen!
echo Konfiguration wird beendet...
ping localhost -n 3 >NUL

exit



:EXIT

exit

Hier hat man die Möglichkeit, mit einem kleinen "Menü" eine Auswahl zu treffen, was passieren soll - getrennt für Lan- oder Wlan-Verbindung, wahlweise statisch oder dhcp. Die IP-Adressen musst Du natürlich vorher an Deine zwecke anpassen ^^

Falls Du den Name der Lan-Verbindungen "festlegen" willst, ersetze
cls
echo \
echo Exakten Name der LAN-Verbingung eingeben:
SET /p DESC
cls
einach mit
cls

SET DESC="Wlan-Verbindung"  ::oder natürlich LAN-Verbindung  

Gruß Dark
eTh0-R
eTh0-R 13.01.2010 um 16:03:48 Uhr
Goto Top
Naja kannst ja trotzdem nochma schreiben für was du dich nun entschieden hast.
Und den Beitrag dann bitte als gelöst kennzeichnen face-smile

LG
erik87
erik87 13.01.2010 um 16:11:13 Uhr
Goto Top
Vielen Dank.

Hast dir ja richtig Mühe gegeben. face-big-smile

Habs jetzt fertig, also Beitrag gelöst.
TheDarkLord
TheDarkLord 13.01.2010 um 16:18:51 Uhr
Goto Top
Danke face-wink

Die Idee gefiel mir, habs gleich auch für mich persönlich genutzt, da ich des öfteren von statisch auf dhcp umstellen muss.
Nun kann ich es mit einem kleinen Menü in kurzer Zeit erledigen...

Gruß Dark
bastla
bastla 13.01.2010, aktualisiert am 10.07.2013 um 19:10:16 Uhr
Goto Top
@TheDarkLord
BASTLAAAAA, BIIIBEEER
Du warst nicht zu überhören ... face-wink

Soferne der Batch unter XP oder höher ausgeführt wird (unter W2000 müsstest Du auf VBS zurückgreifen), kannst Du mit "wmic" eine WMI-Abfrage verwenden, um zumindest herauszufinden, welcher Netzwerkadapter verbunden ist (danke dafür an die "Scripting Guys").

Da "wmic get" leider etwas zickig hinsichtlich der Verwendung innerhalb einer "for"-Schleife ist, verwende ich eine Temporärdatei:
wmic nic get NetConnectionID,NetConnectionStatus /format:csv|findstr /e ",2">%temp%\Conn.txt  
for /f "tokens=2 delims=," %%i in (%temp%\Conn.txt) do set "Conn=%%i"  
[Edit] Geht doch (wie Biber hier schon nachgewiesen hatte) auch direkt:
for /f "tokens=2 delims=," %%i in ('wmic nic get NetConnectionID^,NetConnectionStatus /format:csv^|findstr /e ",2"') do set "Conn=%%i"
[/Edit]

Insgesamt liefert WMI 32 Properties:
wmic nic list /format:csv
Vielleicht hilft ja noch eine andere Eigenschaft dabei, den "richtigen" Adapter herauszufinden ...

Grüße
bastla
erik87
erik87 13.01.2010 um 17:30:31 Uhr
Goto Top
Ich sehe kein Problem die Adapternamen auszulesen.
Mit Ipconfig /all erhält man alle infos! In eine datei und dann folgendes rausfiltern:

"Ethernet-Adapter "%LName%":"
"Drahtlos-Lan-Adapter "%Lname%":"

nur das Leerzeichen nicht vergessen...

face-wink
Biber
Biber 13.01.2010 um 17:36:11 Uhr
Goto Top
Moin erik87,

@thedarklurch und bastla,

ich habe es ja gehört vorhin..face-wink
Aber ich habe auch nur Näherungslösungen.

mit der WMIC-Variante habe ich genau wie mit IPConfig /All eine Mehrdeutigkeit z.B wenn ich einen Loopback-Adapter mit installiert habe (für eine lokale Datenbank)

Denn der hat leider Gates auch den [WMIC-]Status 2, der bei bastla abgeprüft wird.

Beispiel:
>wmic nic get NetConnectionID,NetConnectionStatus,name,Description,Status /format:csv

Node,Description,Name,NetConnectionID,NetConnectionStatus,Status
BIBERNODE0815,Broadcom NetXtreme Gigabit Ethernet,Broadcom NetXtreme Gigabit Ethernet,XYZ-LAN,2, <----------------"gesuchter"
BIBERNODE0815,Asynchroner RAS-Adapter,Asynchroner RAS-Adapter,,,
BIBERNODE0815,WAN-Miniport (L2TP),WAN-Miniport (L2TP),,,
BIBERNODE0815,WAN-Miniport (PPTP),WAN-Miniport (PPTP),,,
BIBERNODE0815,WAN-Miniport (PPPOE),WAN-Miniport (PPPOE),,,
BIBERNODE0815,Parallelanschluss (direkt),Parallelanschluss (direkt),,,
BIBERNODE0815,WAN-Miniport (IP),WAN-Miniport (IP),,,
BIBERNODE0815,Microsoft Loopbackadapter,Microsoft Loopbackadapter,LAN-Verbindung,2, <-------------------------zweiter

Ich komme [bislang] nur auf Indizien... nicht auf eine klare Antwort.

Grüße
Biber
bastla
bastla 13.01.2010 um 17:37:12 Uhr
Goto Top
@erik87
Wenn Du dann noch zeigst, woher der Inhalt von "%LName%" kommt (war ja eigentlich das Thema hier) ...

Grüße
bastla
bastla
bastla 13.01.2010 um 17:41:59 Uhr
Goto Top
@Biber
Ich komme [bislang] nur auf Indizien... nicht auf eine klare Antwort.
Ging mir ja leider auch nicht anders ...

Hinsichtlich des Loopbackadapters könnte natürlich ein Einbeziehen von "Manufacturer" und dann ein
findstr /v "Microsoft"
helfen, aber allgemeingültig wird's damit ja trotzdem nicht ...

Grüße
bastla
erik87
erik87 13.01.2010 um 17:45:15 Uhr
Goto Top
Ich schreibe jetzt mit ipconfig /all alles in eine Datei
die gehe ich Zeile für Zeile durch, suche nach

"Ethernet-Adapter "
oder
"Drahtlos-Lan-Adapter "

nehm dann die ganze Zeile und kürze diese vorne um
17 für Lan oder 21 für Wlan Zeichen und hinten noch eins weg (wegen dem doppelpunkt) und dann habe ich doch den Namen der Lan- oder Wlanverbindung...

@Biber:

kuhle show, aber da seh ich garnicht durch 8)
Biber
Biber 13.01.2010 um 17:54:52 Uhr
Goto Top
Moin erik87,

guter Plan.
Mag ja auch bei deinem Rechner reichen.
Bei meinem Rechner aber erhalte ich via IPConfig zwei "Ethernetadapter" (den gesuchten und den Loopbackadapter, s.o.)

>ipconfig /all|find /i "tadapter"  
Ethernetadapter LAN-Verbindung:
Ethernetadapter XYZ-LAN:

Es ging/geht im diesem Randscharmützel nur um die Verhinderung von Reklamationsforderungen.
Sonst schreibt irgendein Copy&Paster in ein paar Wochen "jetzt habe ich das so an 5000 Kunden ausgeliefert und es tut nicht!".

Grüße
Biber
erik87
erik87 13.01.2010 um 18:00:42 Uhr
Goto Top
Verstehe schon, aber sollte trotzdem kein Problem darstellen.

man nimmt einfach noch Zwei Dateien, eine Für Wlannamen eine für Lannamen und schreibt dann immer wenn "Ether..." oder "Drat..." kommt. den namen in die entsprechende datei und kann dann damit weiter arbeiten, also so mache ich das jetzt ^^
eTh0-R
eTh0-R 14.01.2010 um 08:22:59 Uhr
Goto Top
Wie gesagt mit meiner Schleife komme ich da auch gut klar und die gänigsten Formen kannst damit halt wegschneiden.

for /f "tokens=2,3" %%i in ('ipconfig^|find "Ethernetada"^|find /v "Drah"^|find /v "1394"') do set LANtmp=%%i %%j   

Set LAN=%LANtmp::=% 

Gibt dir ne saubere Variable ohne nen :
Kannst halt noch mit: find /v noch andere Sachen ausschließen wie "WLAN" usw
druckerknecht
druckerknecht 14.01.2010 um 20:50:24 Uhr
Goto Top
Hallo Ihr,

vielleicht gehört es hier nicht hin, aber ich musste folgendes Problem lösen :

wir haben viele Standorte, an denen jeweils ein anderes Netz (mit verschiedensten Subnetzmasken) existiert.
Im Endeffekt habe ich die Sache mit einer Textdatei gelöst, in der alle IP-Adressen mit Standortnamen, Subnetz, DNS etc. aufgelistet sind.
der Standort kann über eine Standortnummer ausgewählt werden. Ich habe die Postleitzahl als Standortnummer
gewählt, das ist für die Leute übersichtlicher.

Das ganze ist über Menü zu bedienen und ist erweiterbar , um andere Funktionen einzubinden.

Mit jeder Verbindung über Netzwerk kann eine neue Version übertragen werden (per Batch).

Wer Interesse hat, kann sich bei mir melden !