Найти ip-адрес по условиям среди нескольких интерфейсов
Прошу помощи в решении следующей задачи:
Есть некоторое количество компьютеров с количеством активных сетевых интерфейсов от 3 до 5 на ОС WinXP, Win7 и Win81. При локальном запуске скрипта в переменную должен передаваться ip-адрес интерфейса, на котором в качестве одного из DNS-серверов прописан хотя бы один из этих адресов: 192.168.0.10, 192.168.0.100. Активный интерфейс с такими DNS-серверами может быть только один.
|
Первый из 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
|
Спасибо за рабочее решение.
|
Время: 22:10.
© OSzone.net 2001-