Dieser Beitrag ist schon älter. Bitte vergewissern Sie sich, dass die Rahmenbedingungen oder der enthaltene Lösungsvorschlag noch dem aktuellen Stand der Technik entspricht.

IP Config über vbs setzen

Mitglied: capct1
Hallo, ich möchte über ein VBS-Script die IP Configuration von einem/mehreren Rechnern schnell und ohne Tippfehler vornehmen.
Ich habe da schon einiges hinbekommen, aber nun hab ich beim setzen der Werte so meine Probleme. Evt. kann mir jemand helfen, denke das wir auch noch andere Interessieren.

'Konfiguration der festen Werte
IPFW1 = "193.31.235." ' IP-Adresse FW1
IPFW2 = "172.16.14." ' IP-Adresse FW2
IPFW3 = "172.16.11." ' IP-Adresse FW3

'Dim strSubnet
' strSubnet = "255.255.255.0"



strGatewayFW1 = "193.31.235.229" ' Gateway FW1
strGatewayFW2 = "172.16.14.229" ' Gateway FW2
strGatewayFW3 = "172.16.14.229" ' Gateway FW3


strSubnet = Array("255.255.255.0") ' Subnetzmask
strDNS = Array("193.31.224.2","172.16.224.2","192.168.0.1") ' DNS-Server
strPWINS = "193.31.224.2" ' Primary Wins
strSWINS = "172.16.224.2" ' Secondary Wins

'Ende der festen Werte

'Komponenten Name ermitteln
Public Pc
Set WshNetwork = WScript.CreateOBject("WScript.Network")
pc = WshNetwork.Computername

'NicIndex der Netzwerkkarten ermitteln
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each IPConfig In IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
text = text & vbcrlf & IPConfig.Caption & vbcrlf & "Index: " & IPConfig.Index & vbcrlf
Next
End If
Next

'NicIndex der Netzwerkkarte auswählen (wird vorher angezeigt)
Public NicIndex
NicIndex = InputBox("Netzwerkkarte(n) von: " & Pc & vbcrlf & text & vbcrlf & "Geben Sie hier den Index der zu Konfigurierenden Netzwerkkarte ein:" , "Administration", "")
If NicIndex = 0 Then
wscript.quit
Else
' MsgBox "Ihr eingegebener NicIndex" & vbcrlf & "zur Konfiguration ist: " & vbcrlf & NicIndex,vbExclamation , "Administration"
End If

'IP Adresse die letzte 1/2/3 Ziffern
Public ip
ip = InputBox("Geben Sie hier die IP Adresse ein.","Administration")
If ip = 0 Then
wscript.quit
Else
' MsgBox "Ihr eingegebene IP " & vbcrlf & "zur Konfiguration ist: " & vbcrlf & ip,vbExclamation , "Administration"
End If

'Feuerwache auswählen
strFrage = "Welches Netz möchten Sie nutzen?" & vbCrLf
strFrage = strFrage & vbCrLf & "1: Feuerwache 1"
strFrage = strFrage & vbCrLf & "2: Feuerwache 2"
strFrage = strFrage & vbCrLf & "3: Feuerwache 3"
'strFrage = strFrage & vbCrLf
'strFrage = strFrage & vbCrLf & "9: config"

ipfw = inputBox(strFrage & vbCrLf, "Administration", "Bitte Ziffer eingeben!")
If ipfw = 1 Then
ipfw = IPFW1
ElseIf ipfw = 2 Then
ipfw = IPFW2
ElseIf ipfw = 3 Then
ipfw = IPFW3
Else
wscript.quit
End If

'NicIndex mit IPConfig vergleichen und den Namen (IPConfig.Caption) der gewählten Karte anzuzeigen
For Each IPConfig In IPConfigSet
If (":" & IPConfig.Index = ":" & NicIndex) Then
NicName = IPConfig.Caption
'MsgBox IPConfig.Index & " " & NicIndex
End If
Next

'MsgBox "Diese IP: "& vbcrlf & ipfw & ip & vbcrlf & "wird auf folgender Netzwerkkarte: "& vbcrlf & NicName & vbcrlf & vbcrlf & "konfiguriert.", vbExclamation , "BF-Wiesbaden Administration"
MsgBox "Für den Rechner: " & pc & vbcrlf & "wird die Netzwerkkarte:" & vbcrlf & NicName & vbcrlf & "mit folgender Daten:" & vbcrlf & "IP-Adresse: " & ipfw & ip & vbcrlf & "konfiguriert.", vbExclamation , "BF-Wiesbaden Administration"

'#######Ab hier test zum Daten schreiben

MsgBox "hier weiter"
conf = ipfw & ip
Set WshShell = CreateObject("Wscript.Shell")
ProxyEnable="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable"
wql = "Select * from win32_NetworkAdapterConfiguration Where IPEnabled=True"
Set oWMI = GetObject("winmgmts:\root\cimv2").ExecQuery(wql)

test = MsgBox ("Wollen Sie die Installation ausführen ?", 49 , "BF-Wiesbaden Administration")
If test <> 1 Then
wscript.quit
Else
For Each IPConfig In IPConfigSet
If (":" & IPConfig.Index = ":" & NicIndex) Then
WshShell.regwrite ProxyEnable,"00000001","REG_DWORD"
IPConfig = EnableStatic(Array(conf), Array(strSubnet))
'MsgBox ""& karte
End If
Next
End If


MsgBox "ende"
wscript.quit
Die Probleme habe ich ab dem Punkt "test zum Daten schreiben.
Ich muß dazu sagen, das ich in Punkto VBS absoluter Neuling bin. (Hoffe mann sieht es nicht so deutlich, und ich bin hier in der richtigen Rubrik)
Vielen Dank
Gruß
Capct

Content-Key: 68436

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

Ausgedruckt am: 30.11.2021 um 07:11 Uhr

Mitglied: SvenGuenter
SvenGuenter 24.09.2007 um 10:55:21 Uhr
Goto Top
was für probleme hast du denn genau? Kommt eine Fehlermeldung? Ich habe mir den Quellcode nicht genau angesehen. Aber es ist auch schlecht was zu suchen von dem man nicht weiß was es ist ;o)


Gruß

Sven
Mitglied: capct1
capct1 24.09.2007 um 14:38:32 Uhr
Goto Top
Hallo Sven,
erst mal danke das du dir das mal angesehen hast.
Ab dem Punkt MsgBox"hier weiter" verstehe ich das ganze nicht mehr so richtig.
Das problem ist wohl die Zeile"IPConfig = EnableStatic(Array......" hier wird wohl die IP Adresse
geschrieben, weiter gehts dann noch mit dem Subnet und Gateway.
Der Anfang mit den Msgboxen usw. habe ich ja noch auf die Reihe gebracht, aber nun komme ich halt nicht weiter.
Gruß
Carsten
Mitglied: SvenGuenter
SvenGuenter 24.09.2007 um 15:04:51 Uhr
Goto Top
Hallo,

nochmal nachgefragt FUNKTIONIERT der Quellcode oder wird eine Fehlermeldung geworfen ( ausgegeben ).
Oder geht es Dir nur um die Funktionsweise des Quellcodes.
Mitglied: capct1
capct1 24.09.2007 um 16:08:51 Uhr
Goto Top
Sorry,
es kommt die Standartmeldung "Typen unverträglich"
Mitglied: SvenGuenter
SvenGuenter 24.09.2007 um 16:21:47 Uhr
Goto Top
Gut dann weiß ich da schon mal bescheid.

Die letzte Frage die ich nun noch habe ist das Netzwerk.

Innerhalb des Netzwerkes werden die oben im Quellcode angegebenen Werte benutzt und es ist KEIN DHCP Server vorhanden.
Mitglied: capct1
capct1 25.09.2007 um 10:12:48 Uhr
Goto Top
Hallo Sven,
nein, es wird kein DHCP-Server verwendet.
Das ganze ist ein städtisches Netzwerk welches von einer externen Firma betreut wird.
Allerding haben wir als Amt 37 unsere Server noch im Haus stehen.
Kommen nun neue Clients stimmen in der Regel die ganzen Neztwerkparameter nicht,
da auch ich hier und da Tippfehler habe möchte ich das ganze über dieses Script regeln.
So ist auch sicher das alle Rechner gleich konfiguriert sind.
Sorry das ich jetzt erst Antworte, hatte gestern zu Hause noch einen Stromausfall.
Bin nun heute wieder arbeiten. Hier kann ich auch Zugreifen.
Gruß und Danke
Carsten
Mitglied: SvenGuenter
SvenGuenter 25.09.2007 um 10:37:44 Uhr
Goto Top
Hallo Carsten,

also erstmal muss ich sagen das ich auf Anhieb keinen Fehler sehe oder finde. Problem ist aber auch das du nicht den kompletten Quellcode gepostet hast. Sprich wie du die Funktionen aufrufst wie deine main die abarbeitet usw. Bitte Maile mir doch mal den kompletten Quellcode an


Sven.Guenter@Sven-Guenter.com
Mitglied: capct1
capct1 16.10.2007 um 20:24:29 Uhr
Goto Top
Hallo Sven und dem Rest der Mitleser,
mit Hilfe eines Kollegen habe ich nun einen funktionierenden Code.
Für Interessierte, hier ist er:
(Ach ja, die IP Adressen sin Fiktiv, zum testen am besten eine VMWare System verwenden,
schon den eigenen Rechner und die Nerven)

Dim strIPFW(3)
Dim strGatewayFW(3)

' Beginn DER KONFIGURATION
strTitel = "Admin IPConfig 1.0"
strIPFW(1) = "193.31.235." ' IP-Adresse Gebäude 1
strIPFW(2) = "172.16.14." ' IP-Adresse Gebäude 2
strIPFW(3) = "172.16.11." ' IP-Adresse Gebäude 3




strGatewayFW(1) = "193.40.235.222" ' Gateway Gebäude 1
strGatewayFW(2) = "172.20.30.229" ' Gateway Gebäude 2
strGatewayFW(3) = "172.20.40.229" ' Gateway Gebäude 3

strSubnet = Array("255.255.255.0") ' Subnetzmask'
strDNS = Array("193.40.224.2","172.20.224.2","192.168.0.1") ' DNS-Server
strPWINS = "193.10.322.2" ' Primary Wins
strSWINS = "172.10.322.2" ' Secondary Wins


' ENDE DER KONFIGURATION

'Komponenten Name ermitteln
Set WshNetwork = WScript.CreateOBject("WScript.Network")
pc = WshNetwork.Computername

'NicIndex der Netzwerkkarten ermitteln
Set IPConfigSet = GetObject("winmgmts://.").ExecQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")



' Alle Karten auflisten
For Each IPConfig In IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)
'text = text & IPConfig.Index & ":" & Chr(9) & IPConfig.Caption & vbcrlf
text = text & vbcrlf & "Index: " & IPConfig.Index & vbcrlf & IPConfig.Caption & vbcrlf
Next
End If
Next
'NicIndex der Netzwerkkarte auswählen (wird vorher angezeigt)
text = "Netzwerkkarte(n) von: " & Pc & vbcr & linie & vbcr & text
text = text & vbcr & linie & "Geben Sie hier den Index der zu Konfigurierenden Netzwerkkarte ein:"
NicIndex = InputBox( text, strTitel , "")
If NicIndex = 0 Then wscript.quit

'Feuerwache auswählen
strFrage = "Welches Netz möchten Sie nutzen?" & vbCrLf
strFrage = strFrage & vbCrLf & "1: Gebäude 1"
strFrage = strFrage & vbCrLf & "2: Gebäude 2"
strFrage = strFrage & vbCrLf & "3: Gebäude 3"
strFrage = strFrage & vbCrLf & ""

fw = inputBox(strFrage & vbCrLf, strTitel , "Bitte Ziffer eingeben!")
If fw=0 Then wscript.quit

'IP Adresse die letzte 1/2/3 Ziffern
ip = InputBox("Geben Sie hier denn letzten Block Ihrer IP Adresse ein.",strTitel)
If ip = 0 Then wscript.quit
conf = strIPFW(fw)+ ip
'MsgBox conf

'"Karte" ermitteln (NicIndex mit IPConfig vergleichen)
For Each Karte In IPConfigSet
If (":" & Karte.Index = ":" & NicIndex) Then Exit For
Next

text = "Für den Rechner: " & pc & vbcrlf & "wird die Netzwerkkarte:" & vbcrlf & Karte.Caption & vbcrlf & "mit folgender Daten:"_
& vbcrlf & "IP-Adresse:" & vbtab & conf & vbcrlf & "Gateway:" & vbtab & vbtab & strGatewayFW(fw) & vbcrlf &_
"DNS:" & vbtab & vbtab & strDNS (DNSSeverSearchOrder)_
& vbcrlf & "Pri.WINS:" & vbtab & vbtab & strPWINS & vbcrlf & "Sec.WINS:" & vbtab & strSWINS & vbcrlf & "konfiguriert."

x = MsgBox(text, 49 , strTitel)
If x <> vbok Then wscript.quit

' IPs in "Karte" schreiben, dabei Fehler abfangen und Erfog ausgeben
'Fehler1 = karte.EnableStatic(Array(ip), strSubnet)
Fehler1 = karte.EnableStatic(Array (conf) , strSubnet)
Fehler2 = karte.SetGateways(Array(strGatewayFW(fw)), Array(1))
Fehler3 = karte.SetDNSServerSearchOrder(strDNS)
Fehler4 = Karte.SetWINSServer(strPWINS,strSWins)
If Fehler1 = 0 Then
strMeldung = strmeldung & "Netzwerkadresse" & vbtab & "für FW " & fw & " erfolgreich eingerichtet." & vbcrlf
Else
strMeldung = strmeldung & "Netzwerkadresse" & vbtab & "für FW " & fw & " Fehler " & fehler1 & vbcrlf
End if
If Fehler2 = 0 Then strMeldung = strmeldung & "NetzwerkGateway" & vbtab & "für FW " & fw & " erfolgreich eingerichtet." & vbcrlf
If Fehler3 = 0 Then strMeldung = strmeldung & "Netzwerk-DNS" & vbtab & "für FW " & fw & " erfolgreich eingerichtet." & vbcrlf
If Fehler4 = 0 Then strMeldung = strmeldung & "Netzwerk-Wins" & vbtab & "für FW " & fw & " erfolgreich eingerichtet." & vbcrlf

'MsgBox strmeldung, 48 , strTitel

Set wmi = GetObject("winmgmts:\\" )
strEinstellungen = strEinstellungen & vbCrLf & vbCrLf & "--> Aktuelle Einstellungen:" & vbCr & ReportIPSettings(wmi)
msgBox strmeldung & strEinstellungen , 48 , strTitel

wscript.quit

Function ReportIPSettings(wmiobj)
wql = "select Caption, DHCPEnabled, DHCPLeaseObtained, DHCPLeaseExpires, DHCPServer, IPAddress, IPSubnet, DefaultIPGateway, DNSServerSearchOrder, DNSDomain, MACAddress from win32_NetworkAdapterConfiguration where IPEnabled = true"
Set ergebnis = wmiobj.ExecQuery(wql)
For each karte in ergebnis
If IsArray(karte.IPAddress) Then
ReportIPSettings = ReportIPSettings & karte.getObjectText_ & vbCrLf
End If
Next
End Function

Function ReportSettings(wmiobj)
wql = "select * from win32_NetworkAdapterConfiguration where IPEnabled = true"
Set ergebnis = wmiobj.ExecQuery(wql)
For each karte in ergebnis
If IsArray(karte.IPAddress) Then
ReportSettings = ReportSettings & karte.getObjectText_ & vbCrLf
End If
Next
End Function

So, sollte jemand eine Verbesserung haben würde ich mich freuen.
Als nächstes sollte der Punkt DHCP und statische IP´s ins Menü mit rein.
Gruß
Capct
Heiß diskutierte Beiträge
question
AD Server von 2012 R2 auf Server 2019 R2 hochgesetzt. Domänenlevel noch 2012 Aber nun geht kein LDAPS . LDAP geht gelöst itititVor 1 TagFrageWindows Server18 Kommentare

Hallo zusammen, wir haben die Server 2012 R2 mit Server 2019 R2 ersetzt. Neue Server kein Inplace. Die neuen DCs haben IP und Name gleich ...

question
Euro Zeichen geht nicht mehr gelöst GwaihirVor 1 TagFrageWindows 1014 Kommentare

Hallo zusammen, bei einem User geht das Euro-Zeichen nicht mehr. Er kann es nur noch über Copy&Paste aus der Zeichentabelle einfügen. Auch STRG+ALT+E klappt nicht. ...

question
Bitlockerpartition versehentlich gelöscht Läppi findet nach Partitiosformatierung mbr gpt die Partition nicht wiederPCChaosVor 1 TagFrageWindows 1010 Kommentare

Hallo zusammen, Ich habe ein riesen Problem, das mir sonst einfach erschien. Ich hatte eine Bitlocker Partition D: auf meinem C: Laufwerk installiert. Weil Windows ...

question
Mini PC lüfterlossurvial555Vor 1 TagFrageHardware8 Kommentare

Hallo zusammen, ich bin auf der Suche nach einer guten Lösung über System für staubintensive UmgebungenIch setzte zur Zeit 4 PCs in einem Lagerumfeld ein, ...

question
Dauernd gesperrter User in der ADChristianIT2021Vor 1 TagFrageWindows Server3 Kommentare

Hallo zusammen, Ich habe ein riesen Problem ich habe einen User der wird immer wieder gesperrt. Über die Eventlgs habe ich schon herausgefunden aus welcher ...

question
RDS 2019 - Excel2019 öffnet Dateien sehr langsam gelöst pr3adusVor 1 TagFrageWindows Server15 Kommentare

Guten Tag, ich habe ein Problem bei einem meiner Kunden: seit kurzem verwendet der Kunde meine RDS-Farm. Hier haben wir 2 RDS-Hosts und ein RDS-GW ...

question
Online Kalender gesuchtStefanKittelVor 1 TagFrageInternet8 Kommentare

Hallo, ein Kunde von mir sucht einen Online-Kalender zur Raumreservierung. Keine Datenschutzrelevanten Informationen. Es geht um 3-4 Besprechungsräume in einem Gebäude wo mehrere Firmen sind. ...

question
IMAP - Office365 gesperrt?NulliHBVor 1 TagFrageExchange Server15 Kommentare

Moin Zusammen Ich hoffe ich bin hier richtig :) Es geht um Office365 Exchange / Sicherheitseinstellung Ein frischer Tenant Und ich möchte auf die eine ...