PDA

Показать полную графическую версию : Скрипт Visual Basic для определения IP в Windows 7 и XP


Hitsi
19-12-2009, 22:10
Имеется скрипт на vb который запускается из bat фаила командой cscript delroute.vbs
Следующего содержания:
Option Explicit
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim colNetAdapters
Dim addr
Dim cDeleteRoute
Dim WshShell
strComputer = "localhost"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where Description='WAN (PPP/SLIP) Interface' ")
For Each objNetAdapter in colNetAdapters
For Each addr in objNetAdapter.IPAddress
cDeleteRoute = "route delete 224.0.0.0 mask 224.0.0.0 " + addr
Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo cDeleteRoute
WshShell.Run (cDeleteRoute)
Next
Next


По сути он определяет IP адресс интерфейса WAN (PPP/SLIP) Interface (VPN вроде как) и удаляет роут "route delete 224.0.0.0 mask 224.0.0.0 " + IP
В ХР все работает замечательно.... в семерке не пашет (в висте скорее всего тоже)

Кто может подсказать в чем тут ошибка?

ЗЫ: скрипт написан путем поиска разного рода информации в инете и методом научного тыка
Использовалась вот эта документация (http://msdn.microsoft.com/en-us/library/aa394217(VS.85).aspx)
Если кто подскажет как его улучшить, сделать проверки на существование айпиадреса и интерфейса буду очень благодарен

Valeant
19-12-2009, 22:31
Hitsi,
Вообще то лучше уже переходить на Powershell и конкретно
http://www.oszone.net/print/7108/
http://www.itcommunity.ru/blogs/posh/archive/category/1271.aspx

Hitsi
19-12-2009, 22:48
Скрипт делался не конкретно для меня а для общего пользования и у кого-то до сих пор ХР, а там павершелл по умолчанию нет

ЗЫ: Вообще-то я не программист как таковой, я просто могу использовать уже кем-то написанные скрипты почти на любом языке програмирования... вот и тут я нашел несколько скриптов, соединил их в один и исправил под свои нужды. А вообще по большому счету я VB не знаю

Vancouver
19-12-2009, 23:03
запускается из bat »
Батник запускаем от имени Админа ?

Hitsi
19-12-2009, 23:28
Конечно )

fomin_
20-12-2009, 23:35
Мне думается что Ваш скрипт нормально отрабатывает и в Win7, однако интерфейс, который в XP называется WAN (PPP/SLIP) Interface, в win7 имеет другое имя. Для определения имен интерфейсов, запустите следующий скрипт на win7 и на XP:

Option Explicit
Dim objWMIService, objNetAdapter, strComputer, colNetAdapters, addr, cDeleteRoute
Dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")
strComputer = "localhost"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objNetAdapter in colNetAdapters
For Each addr in objNetAdapter.IPAddress
WScript.Echo "Description = " & objNetAdapter.Description & vbCrLf & _
"IP Address = " & addr& vbCrLf
Next
Next
Только запускайте его не через cscript, а через wscript или просто 2-ды кликните на файле.
Фактически, это слегка переделанный Ваш скрипт.
У Вас должны отобразиться имена интерфейсов, которым присвоен IP-адрес и которые подключены к сети.

Hitsi
29-01-2010, 14:26
Извиняюсь что меня так долго не было...

Скрипт написанный выше отображает только локальный айпи адресс машины и все.
Покопавшись чуть выяснилось что существует нужный route в описании Win32_IP4RouteTable но там вместоайпиадреса интрфейса указывается его индекс.
В моем случае 3 одинаковых роута на 3 разных индекса. Один индекс это локалхост, второй - локальный адрес (сетевой адаптер), третий это нужный нам vpn. Проблема в том что в описании Win32_NetworkAdapter и Win32_NetworkAdapterConfiguration нет данного интерфейса вообще (с данным индексом)

т.е. интерфейс есть но описывается он где-то еще ( А вот где это хотелось бы знать

ЗЫ: wscript просто делает это в окошке... а нажимать на кнопку ок при выводе нового значения утомительно. Проще в консоле посмотреть сразу список

Hitsi
01-02-2010, 19:46
Может кто-нибудь знает другой способ получить ip адрес присвоенный при подключении vpn не получая его с удаленного хоста?

Hitsi
20-02-2010, 23:23
проблема все еще остается....
Нужно узнать IP адресс компа подключенного к впн, без запросов на другие сайты, для Windows 7 (и Vista) и затем удалить один маршрут.

Критерий только один - никакого дополнительного ПО ставить не надо.




© OSzone.net 2001-2012