понедельник, 31 декабря 2012 г.

Играем с сетевыми картами и IP конфигурациями

Недавно в процессе обсуждения на форуме ОGОшников у одного из собеседников возникло желание отключать интернет на компьютере, когда он ему не нужен. Сразу ему посоветовали зайти в центр управления затем установки сетевых адаптеров и уже там отключить сетевую карту. Это сколько лишних телодвижений, а как известно лень двигатель прогресса.

Посему предлагаю вашему вниманию скрипт написанный на VBS, выполняющий эту рутинную операцию.
Создаем пустой файл(имя любое) с расширением vbs и копируем в него код.


Set oWMI = GetObject("winmgmts:\\.\root\CIMV2")
Set cItems = oWMI.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID Is Not Null") 
 

For Each oItem in cItems 
    If MsgBox(oItem.Name, 4, "Смена статуса сетевой карты") = 6 Then
        If oItem.NetConnectionStatus = 0 Then
            If MsgBox("Включить" & vbCR & oItem.Name,4, "Смена статуса сетевой карты") = 6 Then oItem.Enable()
        Else
            If MsgBox("Выключить" & vbCR & oItem.Name,4, "Смена статуса сетевой карты") = 6 Then oItem.Disable()
        End If
    End If
Next

Теперь после запуска скрипта вам остается всего лишь ответить на вопросы в соответствии с вашими желаниями.

По ходу написания предыдущего скрипта вспомнил еще одну проблему часто возникающую у определенной категории пользователей - как узнать IP адрес сетевой карты своего компьютера. Можно конечно запустить консоль и набрав команду ipconfig увидеть желаемое, я предлагаю другой как мне кажется более быстрый путь решения. Вы можете используя скрипт сразу получить результат.  Опять создаем пустой файл с расширением vbs и копируем в него код.

On Error Resume Next
Set oWMI = GetObject("winmgmts:\\.\root\CIMV2")
Set cItems = oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPENabled=TRUE")
                                         
For Each oItem In cItems
    strDefaultIPGateway = Join(oItem.DefaultIPGateway, ",")
    strDNSServerSearchOrder = Join(oItem.DNSServerSearchOrder, "/")
    strIPAddress = Join(oItem.IPAddress, ",")
    strIPSubnet = Join(oItem.IPSubnet, ",")
    WScript.Echo     "Адаптер:  " & oItem.Description & vbCR & _
                    "MAC:  " & oItem.MACAddress & vbCR & _
                    "IP:  " & strIPAddress & vbCR & _
                    "Маска:  " & strIPSubnet & vbCR & _
                    "Шлюз:  " & strDefaultIPGateway & vbCR & _
                    "DNS сервер:  " & strDNSServerSearchOrder & vbCR & _
                    "DHCP сервер:  " & oItem.DHCPServer
Next

Еще возникает проблема попасть в ADSL модем иди роутер если у сетевой карты включен DHCP (получать IP автоматически). Для общения с модемом опять надо идти в свойства сетевой карты и прописывать статический IP адрес, а потом возвращать все обратно. И этой проблеме можно помочь, опять же с помощью скрипта.

strIP = Array("192.168.1.5")
strMask = Array("255.255.255.0")
strGateway = Array("192.168.1.1")
strDNS = Array("192.168.1.1")
Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
Set cItems = oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration Where IPENabled=TRUE")
 

For Each oItem In cItems
    If oItem.DHCPEnabled Then
        If MsgBox(oItem.Description & vbCr & "Отключить DHCP",4,"смена стауса адаптера") = 6 Then
            oItem.EnableStatic strIP,strMask
            oItem.SetGateways strGateway
            oItem.SetDNSServerSearchOrder strDNS
        End If
    Else
        If MsgBox(oItem.Description & vbCr & "Включить DHCP",4,"смена стауса адаптера") = 6 Then oItem.EnableDHCP()
    End If
Next

Правда есть небольшой нюанс, скрипт рассчитан на модем с IP адресом 192.168.1.1 если ваш модем с адресом   192.168.0.1 то ниже значения переменных для него.

strIP = Array("192.168.0.5")
strMask = Array("255.255.255.0")
strGateway = Array("192.168.0.1")
strDNS = Array("192.168.0.1")

Set oWMI =

 Я прекрасно понимаю, что все это можно решить с помощью других средств, информации на эту тему полно в интернете, кому то это покажется смешным.

Комментариев нет:

Отправить комментарий