2017-02-27 4 views
0

Ich versuche .Exec zu verwenden, um die IP-Konfiguration einer Maschine zurückzuziehen. Von der gegebenen Ausgabe des Befehls möchte ich dann alle WLAN- und Ethernet-LAN-IPv4-Adressen oder "Medien getrennt" zurückgeben, falls sie nicht vorhanden sind. Ich bin ziemlich fest, wie man das anwendet, da Benutzer oft mehrere NICs haben können. Ich kann die Ausgabe bekommen, aber ich bin mir nicht sicher, wie ich die Ergebnisse der ipconfig durchlaufen soll, um die Informationen zu speichern, die ich brauche.Verwenden von VBScript, um IPV4-Adressen als Variablen zurückzugeben

Set objShell = CreateObject("WScript.Shell") 
StrIPConfig = "ipconfig /all" 
Set IPConfig = objShell.Exec(StrIPConfig) 

strText = "" 

Do While Not IPConfig.StdOut.AtEndOfStream 
    strText = IPConfig.StdOut.Readline 
    If InStr(strText, "Wireless Network Connection") Then 
     strWLAN = IPConfig.StdOut.Readline +2 
     WScript.Echo strWLAN 
    End If 
Loop 

Do While Not IPConfig.StdOut.AtEndOfStream 
    strText = IPConfig.StdOut.Readline 
    If InStr(strText, "Local Area Connection") Then 
     strLAN = IPConfig.StdOut.Readline +2 
     WScript.Echo strWLAN 
    End If 
Loop 

Hat über WMI Windows-Batch-Datei oder WMI VBscript oder VBScript mit Exec wie oben durchgeführt werden. PowerShell ist leider keine Option.

+1

Mit 'wmic' einer WMI-Abfrage auszuführen nur die Informationen der Rückkehr Sie brauchen, ist wahrscheinlich einfacher zu sein als die Ausgabe von Parsen 'ipconfig'. Siehe http://serverfault.com/a/55437/1440 – Richard

Antwort

0

Verwendung WMI (speziell die Win32_NetworkAdapterConfiguration Klasse) statt Beschuss aus:

Set wmi = GetObject("winmgmgts://./root/cimv2") 

qry = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True" 

For Each nic In wmi.ExecQuery(qry) 
    For Each addr In nic.IPAddress 
    WScript.Echo addr 
    Next 
Next 
0

Ich habe eine Antwort von einem anderen Forum eingerichtet, einen WMI-Skript von VBScript eingewickelt werden. Es speichert derzeit die Informationen als String jedoch wird es leicht genug sein, jetzt anzupassen:

strWLAN = "" 
strLAN = "" 
strComputer = "." 

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set IPAdapterSet = objWMIService.ExecQuery("Select AdapterType, NetConnectionID, MACAddress from Win32_NetworkAdapter WHERE NetConnectionID LIKE 'Wireless network%'") 


For Each IPConfig in IPAdapterSet 
Set IPConfigSet = objWMIService.ExecQuery("Select IPEnabled, Description, Caption, IPAddress, MACAddress from Win32_NetworkAdapterConfiguration where IPEnabled='True' AND MACAddress = '" & IPConfig.MACAddress & "' ") 
    For Each IPConf in IPConfigSet 
    if NOT strWLAN="" then 
     strWLAN = strWLAN & vbCrLf 
    end if 
    strWLAN = strWLAN & " " & IPConfig.NetConnectionID & " " 
    If Not IsNull(IPConf.IPAddress) Then 
    For i = LBound(IPConf.IPAddress) to UBound(IPConf.IPAddress) 
     If Not ((Instr(IPConf.IPAddress(i), ":") > 0) or (Instr(IPConf.IPAddress(i), "none") > 0)) Then 
    if i=0 then 
     strWLAN = strWLAN & " " & IPConf.IPAddress(i) 
    else 
     strWLAN = strWLAN & ", " & IPConf.IPAddress(i) 
    end if 
     End If 
    Next 
    End If 
    next 
Next 



Set objWMIService2 = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set IPAdapterSet2 = objWMIService2.ExecQuery("Select AdapterType, NetConnectionID, MACAddress from Win32_NetworkAdapter WHERE NetConnectionID LIKE 'Local Area Connection%'") 


For Each IPConfig in IPAdapterSet2 
Set IPConfigSet = objWMIService.ExecQuery("Select IPEnabled, Description, Caption, IPAddress, MACAddress from Win32_NetworkAdapterConfiguration where IPEnabled='True' AND MACAddress = '" & IPConfig.MACAddress & "' ") 
    For Each IPConf in IPConfigSet 
    if NOT strLAN="" then 
     strLAN = strLAN & vbCrLf 
    end if 
    strLAN = strLAN & " " & IPConfig.NetConnectionID & " " 
    If Not IsNull(IPConf.IPAddress) Then 
    For i = LBound(IPConf.IPAddress) to UBound(IPConf.IPAddress) 
     If Not ((Instr(IPConf.IPAddress(i), ":") > 0) or (Instr(IPConf.IPAddress(i), "none") > 0)) Then 
    if i=0 then 
     strLAN = strLAN & " " & IPConf.IPAddress(i) 
    else 
     strLAN = strLAN & ", " & IPConf.IPAddress(i) 
    end if 
     End If 
    Next 
    End If 
    next 
Next 


wscript.Echo strWLAN 
wscript.Echo strLAN 
Verwandte Themen