string in array suchen
Hallo,
ich habe mir folgendes zusammen gebaut um aus einem array einen string der die ip adresse eines bestimmten adapters enthält auszulesen, vorher setze ich noch die bedingung dass diese ip aus einem bestimmten adressbreich kommt:
Set objNetwork = WScript.CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT IPAddress " & _
"FROM Win32_NetworkAdapterConfiguration " & _
"WHERE IPEnabled=TRUE")
For Each objItem In colItems
If Not IsNull(objItem.IPAddress) Then
For i = LBound(objItem.IPAddress) To UBound(objItem.IPAddress)
if objItem.IPAddress(i) like "172.16." Then
WScript.Echo("IP-Adresse: " & objItem.IPAddress(i) & " gefunden.")
else WScript.Echo("No Match.")
end if
next
End if
Next
nun meine frage: warum bekommen ich immernoich die ausgabe "IP-Adresse: 172.16.irgendwas gefunden" auch wenn ich den adressbereich ändere, meinetwegen auf "if objItem.IPAddress(i) like "232.16."" setze?
bin noch absoluter vbs noob, kann es daher nich wirklich nachvollziehen, sorry
danke schonmal im voraus!
ich habe mir folgendes zusammen gebaut um aus einem array einen string der die ip adresse eines bestimmten adapters enthält auszulesen, vorher setze ich noch die bedingung dass diese ip aus einem bestimmten adressbreich kommt:
Set objNetwork = WScript.CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
On Error Resume Next
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT IPAddress " & _
"FROM Win32_NetworkAdapterConfiguration " & _
"WHERE IPEnabled=TRUE")
For Each objItem In colItems
If Not IsNull(objItem.IPAddress) Then
For i = LBound(objItem.IPAddress) To UBound(objItem.IPAddress)
if objItem.IPAddress(i) like "172.16." Then
WScript.Echo("IP-Adresse: " & objItem.IPAddress(i) & " gefunden.")
else WScript.Echo("No Match.")
end if
next
End if
Next
nun meine frage: warum bekommen ich immernoich die ausgabe "IP-Adresse: 172.16.irgendwas gefunden" auch wenn ich den adressbereich ändere, meinetwegen auf "if objItem.IPAddress(i) like "232.16."" setze?
bin noch absoluter vbs noob, kann es daher nich wirklich nachvollziehen, sorry
danke schonmal im voraus!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 99928
Url: https://administrator.de/forum/string-in-array-suchen-99928.html
Ausgedruckt am: 22.04.2025 um 01:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo larty81 und willkommen im Forum!
Du wirst dann auf den Fehler in Zeile 18 hingewiesen (BTW: wenn Du -Formatierung verwendest, lässt sich in Deinem geposteten Script die Zeile 18 leichter finden) - VBScript kennt nämlich kein "Like". Anstelle dessen kannst Du InStr() oder Left() verwenden.
Eine Alternative zur "Vergleichs"-Schleife könnte übrigens so aussehen:
Grüße
bastla
nun meine frage: warum bekommen ich immernoich die ausgabe "IP-Adresse: 172.16.irgendwas gefunden" auch wenn ich den adressbereich ändere, meinetwegen auf "if objItem.IPAddress(i) like "232.16."" setze?
Die Antwort erhältst Du, wenn Du "On Error Resume Next" entfernst (was während der Testphase eines Scripts generell anzuraten ist).Du wirst dann auf den Fehler in Zeile 18 hingewiesen (BTW: wenn Du -Formatierung verwendest, lässt sich in Deinem geposteten Script die Zeile 18 leichter finden) - VBScript kennt nämlich kein "Like". Anstelle dessen kannst Du InStr() oder Left() verwenden.
Eine Alternative zur "Vergleichs"-Schleife könnte übrigens so aussehen:
For Each objItem In colItems
If Not IsNull(objItem.IPAddress) Then
If InStr(Join(objItem.IPAddress), "192.168.") > 0 Then
WScript.Echo("IP-Adresse: " & objItem.IPAddress(i) & " gefunden.")
Else
WScript.Echo("No Match.")
End If
End If
Next
bastla