VBScript, je nach IP Adresse etwas tun
Hallo zusammen,
wie ist es möglich mit vbscript zuerst einmal die eigene IP adresse abzufragen und anschliessend je nach IP-Range das tun was dort definiert ist. Welche befehle muss ich kennen?
sollte ungefähr so aussehen:
IP 192.168.25.
IP 192.168.50.
IP 192.168.75.
IP 192.168.100.
Wenn meine IP Adresse 192.168.25.7 ist sollte er
->das
->und das
->und das
machen
Wenn meine IP Adresse 192.168.50.92 ist sollte er
->das
->und das
->und das
machen
Wenn meine IP Adresse 192.168.75.33 ist sollte er
->das
->und das
->und das
machen
Vielen Dank bereits im Voraus!
wie ist es möglich mit vbscript zuerst einmal die eigene IP adresse abzufragen und anschliessend je nach IP-Range das tun was dort definiert ist. Welche befehle muss ich kennen?
sollte ungefähr so aussehen:
IP 192.168.25.
IP 192.168.50.
IP 192.168.75.
IP 192.168.100.
Wenn meine IP Adresse 192.168.25.7 ist sollte er
->das
->und das
->und das
machen
Wenn meine IP Adresse 192.168.50.92 ist sollte er
->das
->und das
->und das
machen
Wenn meine IP Adresse 192.168.75.33 ist sollte er
->das
->und das
->und das
machen
Vielen Dank bereits im Voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203414
Url: https://administrator.de/contentid/203414
Ausgedruckt am: 23.11.2024 um 00:11 Uhr
10 Kommentare
Neuester Kommentar
Schau Dir das mal an: http://www.activexperts.com/admin/scripts/wmi/vbscript/0340/
Die IP-Adresse findest Du dann in objItem.IPAddress, und die kannst Du dann ja in einer If-Then-Konstruktion verwenden ...
Die IP-Adresse findest Du dann in objItem.IPAddress, und die kannst Du dann ja in einer If-Then-Konstruktion verwenden ...
Hallo Zusammen.
Der Link von Sarek scheint schon etwas älter zu sein. Mittlerweile bekommst du so ein Array mit IPv4 und IPv6 Adresse.
Teste mal, ob das für dich funktioniert:
Die WScript.Echo Zeilen ersetzt du entsprechend durch deinen Code und ergänzt die fehlenden Case Anweisungen.
Grüße
rubberman
Der Link von Sarek scheint schon etwas älter zu sein. Mittlerweile bekommst du so ein Array mit IPv4 und IPv6 Adresse.
Teste mal, ob das für dich funktioniert:
Option Explicit
Dim colItems, oItem, aIP
Set colItems = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery( _
"SELECT * FROM Win32_NetworkAdapterConfiguration WHERE NOT MACAddress = '' AND IPEnabled = TRUE", "WQL", 48)
For Each oItem In colItems
If IsArray(oItem.IPAddress) Then
aIP = Split(oItem.IPAddress(0), ".")
Else
aIP = Split(oItem.IPAddress, ".")
End If
Next
If IsArray(aIP) Then
Select Case aIP(0) & "." & aIP(1) & "." & aIP(2)
Case "192.168.25"
WScript.Echo "1"
Case "192.168.50"
WScript.Echo "2"
End Select
End If
Die WScript.Echo Zeilen ersetzt du entsprechend durch deinen Code und ergänzt die fehlenden Case Anweisungen.
Grüße
rubberman
Hallo netgearsdk,
ich hatte dich schon verstanden. Meine Frage an dich war, welche Eigenschaft / welcher Wert infrage kommt, um die richtige IP Adresse zu selektieren. Ein paar Möglichkeiten hatte ich dir schon genannt.
Gehen wir mal davon aus, dass der Name immer die Zeichenfolge "LAN" enthält, dann könntest du die Zeile 5 in meinem Code durch folgende ersetzen:
Ob das allerdings ausreicht, um sicher von anderen Netzwerkadaptern abzugrenzen und ob der gesuchte Netzwerkadapter immer die Zeichenfolge "LAN" enthält, kannst nur du wissen. Darum war meine Bitte, das Unterscheidungskriterium vorab zu definieren.
Grüße
rubberman
ich hatte dich schon verstanden. Meine Frage an dich war, welche Eigenschaft / welcher Wert infrage kommt, um die richtige IP Adresse zu selektieren. Ein paar Möglichkeiten hatte ich dir schon genannt.
Gehen wir mal davon aus, dass der Name immer die Zeichenfolge "LAN" enthält, dann könntest du die Zeile 5 in meinem Code durch folgende ersetzen:
"SELECT * FROM Win32_NetworkAdapterConfiguration WHERE NOT MACAddress = '' AND IPEnabled = TRUE AND Description LIKE '%LAN%'", "WQL", 48)
Grüße
rubberman
Hallo netgearsdk.
Grüße
ruberman
Doch irgendwie kann ich aufeinmal keine IP Adresse mehr auslesen, wenn ich -> Description LIKE '%LAN%' noch hinzufüge.
OK, "Description" ist nicht "Name" und auch nicht "Caption". Diese Eigenschaften existieren aber leider nicht in der Win32_NetworkAdapterConfiguration Klasse. Von daher ist es durchaus möglich, dass der Teilstring "LAN" gar nicht vorkommt. Das hättest du dir aber mal anzeigen lassen und entsprechend ändern können.Ist es möglich die Werte, welche in diese For Each schleife fallen als ein Array zu speichern und ausserhalb dieser For Each Schleife im Code wieder zu verwende?
Klar ist das möglich. Aber warum ein zusätzliches Array? Packe den Code doch einfach direkt mit in die Schleife.Option Explicit
Dim colItems, oItem, aIP
Set colItems = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery( _
"SELECT * FROM Win32_NetworkAdapterConfiguration WHERE NOT MACAddress = '' AND IPEnabled = TRUE", "WQL", 48)
For Each oItem In colItems
If IsArray(oItem.IPAddress) Then
aIP = Split(oItem.IPAddress(0), ".")
Else
aIP = Split(oItem.IPAddress, ".")
End If
If IsArray(aIP) Then
Select Case aIP(0) & "." & aIP(1) & "." & aIP(2)
Case "192.168.25"
WScript.Echo "1"
Case "192.168.50"
WScript.Echo "2"
End Select
End If
Next
Grüße
ruberman
Hallo netgearsdk.
Für das Anzeigen der Informationen ist der Link von Sarek recht gut geeignet. Du kannst dort bereits mit WHERE einschränken und musst berücksichtigen, dass du statt auf Eigenschaft .IPAddress auf .IPAddress(0) verweisen musst. Du kannst das Script auch entsprechend einkürzen und nur das anzeigen lassen, was dich interessiert. Ansonsten hilft ein
am Anfang des Scripts um Fehlermeldungen zu unterdrücken und es weiter laufen zu lassen.
Wo ich meine Informationen beziehe? Ich mache das nicht wesentlich anders als du. Wenn ich gezielt die Doku benötige, dann nehme ich gerne die Hilfe des Urhebers in Anspruch, indem ich bei der Suche ein "msdn" voran stelle. Das führt dich dann direkt zu dieser Seite
Grüße
rubberman
Für das Anzeigen der Informationen ist der Link von Sarek recht gut geeignet. Du kannst dort bereits mit WHERE einschränken und musst berücksichtigen, dass du statt auf Eigenschaft .IPAddress auf .IPAddress(0) verweisen musst. Du kannst das Script auch entsprechend einkürzen und nur das anzeigen lassen, was dich interessiert. Ansonsten hilft ein
On Error Resume Next
am Anfang des Scripts um Fehlermeldungen zu unterdrücken und es weiter laufen zu lassen.
Wo ich meine Informationen beziehe? Ich mache das nicht wesentlich anders als du. Wenn ich gezielt die Doku benötige, dann nehme ich gerne die Hilfe des Urhebers in Anspruch, indem ich bei der Suche ein "msdn" voran stelle. Das führt dich dann direkt zu dieser Seite
Grüße
rubberman