Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Найти ip-адрес по условиям среди нескольких интерфейсов (http://forum.oszone.net/showthread.php?t=295056)

IvanXXL 06-02-2015 08:19 2467189

Найти ip-адрес по условиям среди нескольких интерфейсов
 
Прошу помощи в решении следующей задачи:
Есть некоторое количество компьютеров с количеством активных сетевых интерфейсов от 3 до 5 на ОС WinXP, Win7 и Win81. При локальном запуске скрипта в переменную должен передаваться ip-адрес интерфейса, на котором в качестве одного из DNS-серверов прописан хотя бы один из этих адресов: 192.168.0.10, 192.168.0.100. Активный интерфейс с такими DNS-серверами может быть только один.

Iska 06-02-2015 09:32 2467227

Цитата:

Цитата IvanXXL
ip-адрес интерфейса »

Первый из IP-адресов, на WSH:
Скрытый текст
Код:

Option Explicit

Dim objDictionary


Set objDictionary = WScript.CreateObject("Scripting.Dictionary")

With objDictionary
        .Add "192.168.0.10",  ""
        .Add "192.168.0.100", ""
End With

WScript.Echo FindIPAddress()

objDictionary.RemoveAll
Set objDictionary = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Function FindIPAddress()
        Dim objSWbemObjectEx
       
        Dim strDNSServer
        Dim strAddress
       
        For Each objSWbemObjectEx In WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
                With objSWbemObjectEx
                        If Not IsNull(.DNSServerSearchOrder) Then
                                For Each strDNSServer In .DNSServerSearchOrder
                                        If objDictionary.Exists(strDNSServer) Then
                                                If Not IsNull(.IPAddress) Then
                                                        For Each strAddress In .IPAddress
                                                                FindIPAddress = strAddress
                                                               
                                                                Exit Function
                                                        Next
                                                End If
                                        End If
                                Next
                        End If
                End With
        Next
End Function
'=============================================================================


Примерный метод использования в пакетном файле:
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in (
        `cscript.exe //nologo "C:\Песочница\066\FindIPAddress.vbs"`
) do set sIPAddress=%%~i


if defined sIPAddress (
        echo [%sIPAddress%].
) else (
        echo Can't determine IP-address.
        exit /b 1
)

endlocal
exit /b 0


IvanXXL 09-02-2015 06:24 2468688

Спасибо за рабочее решение.


Время: 22:10.

Время: 22:10.
© OSzone.net 2001-