capct1
Goto Top

IP Config über vbs setzen

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

Printed on: April 23, 2024 at 20:04 o'clock

Member: SvenGuenter
SvenGuenter Sep 24, 2007 at 08:55:21 (UTC)
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
Member: capct1
capct1 Sep 24, 2007 at 12:38:32 (UTC)
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
Member: SvenGuenter
SvenGuenter Sep 24, 2007 at 13:04:51 (UTC)
Goto Top
Hallo,

nochmal nachgefragt FUNKTIONIERT der Quellcode oder wird eine Fehlermeldung geworfen ( ausgegeben ).
Oder geht es Dir nur um die Funktionsweise des Quellcodes.
Member: capct1
capct1 Sep 24, 2007 at 14:08:51 (UTC)
Goto Top
Sorry,
es kommt die Standartmeldung "Typen unverträglich"
Member: SvenGuenter
SvenGuenter Sep 24, 2007 at 14:21:47 (UTC)
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.
Member: capct1
capct1 Sep 25, 2007 at 08:12:48 (UTC)
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
Member: SvenGuenter
SvenGuenter Sep 25, 2007 at 08:37:44 (UTC)
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
Member: capct1
capct1 Oct 16, 2007 at 18:24:29 (UTC)
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