1 (изменено: migomigo, 2013-01-19 13:58:59)

Тема: AHK: Настройки сетевого адаптера

Доброго времени суток!
Подскажите пожалуйста, есть возможность средствами AutoHotKey прописать "альтернативный DNS" ?
http://migo.ucoz.ru/Downl/DNS-Server.jpg

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

2

Re: AHK: Настройки сетевого адаптера

Средствами AutoHotKey 1.0.48.05?

3

Re: AHK: Настройки сетевого адаптера

migomigo, обрати внимание на оформление заголовков тем.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

4

Re: AHK: Настройки сетевого адаптера

teadrinker пишет:

migomigo, обрати внимание на оформление заголовков тем.

Раньше, все свои посты оформлял полным названием  AutoHotKey

Название темы исправил.

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

5

Re: AHK: Настройки сетевого адаптера

creature.ws пишет:

Средствами AutoHotKey 1.0.48.05?

Согласен, у меня подпись динозавра..

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

6

Re: AHK: Настройки сетевого адаптера

Вопрос не про подпись был.
Win32_NetworkAdapterConfiguration

7

Re: AHK: Настройки сетевого адаптера

creature.ws пишет:

Вопрос не про подпись был.
Win32_NetworkAdapterConfiguration

В таком случае, версия AHK не имеет значения.

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

8

Re: AHK: Настройки сетевого адаптера

Настройка параметров сетевого адаптера из командной строки

+ Изменить настройки DNS

Изменить настройки DNS
Команда выглядит следующим образом:


C:\Windows\system32>netsh interface ip set dnsservers help
 
Применение: set dnsservers [name=]<строка> [source=]dhcp|static
             [[address=]<IP-адрес>|none]
             [[register=]none|primary|both]
             [[validate=]yes|no]
 
Параметры
 
      Тег            Значение
 
      name         - Имя или индекс интерфейса.
      source       - Одно из следующих значений:
                     dhcp: назначает DHCP в качестве источника конфигурации
                           DNS-серверов для определенного интерфейса.
                     static: назначает в качестве источника конфигурации
                           DNS-серверов локальную статическую конфигурацию.
      address      - Одно из следующих значений:
                     <IP-адрес>: IP-адрес DNS-сервера.
                     none: очищает список DNS-серверов.
      register     - Одно из следующих значений:
                     none: отключает динамическую регистрацию DNS.
                     primary: регистрация только с суффиксом основного DNS.
                     both: регистрация как с суффиксом основного DNS,
                           так и с суффиксом, определенным для подключения.
 
      validate     - Указывает, выполняется ли проверка после настройки
                     параметров DNS-сервера. Значение по умолчанию: yes.
 
 
Примечания. Задает в конфигурации DNS-сервера режим DHCP или статический
            режим. Параметр addr будет доступен для конфигурации
            статического списка IP-адресов DNS-серверов для указанного
            интерфейса только при установке источником static. Если значение
            параметра Validate равно yes, то новый DNS-сервер проверяется.
 
Примеры
 
      set dnsservers name="Local Area Connection" source=dhcp
      set dnsservers "Local Area Connection" static 10.0.0.1  primary

В сети гуляет подавляющее большинство описаний, где вместо dnsservers указывается dns. Это устаревший параметр, который оставлен для совместимости.

Пример 1. Задать автоматическое получение параметров DNS-сервера по протоколу DHCP для адаптера "Подключение по локальной сети":


netsh interface ip set dnsserver name="Подключение по локальной сети" source=dhcp
или
netsh interface ip set dnsserver "Подключение по локальной сети" dhcp

Пример 2. Задать статические параметры DNS-сервера для адаптера "Подключение по локальной сети", где первый DNS-сервер имеет IP-адрес 213.108.208.2, а второй 213.108.209.2:


netsh interface ip set dnsservers "Подключение по локальной сети" static 213.108.208.2
netsh interface ip add dnsservers "Подключение по локальной сети" 213.108.209.2

Обратите внимание, что команда set dnsservers сбрасывает список DNS-серверов для выбранного сетевого адаптера и устанавливает первый DNS-сервер в указанное значение. Последующие DNS-сервера добавляются через команду add вместо set.

9

Re: AHK: Настройки сетевого адаптера

Спасибо.
  Вот что получилось:

SendMode Input 
SetKeyDelay, -1

Conect_Name := "BSS"                       ;=============================== [ Имя сетевого подключения ]
IP_Adress := "192.168.250.22"              ;=============================== [ DNS Server ]
WinName := "ahk_class ConsoleWindowClass"  ;=============================== [ Имя Окна ]
Command = netsh interface ip add dnsservers "%Conect_Name%" %IP_Adress%
    
F10::
Run, CMD.exe, C:\Windows\System32
WinWait, % WinName
Send, % Command "{Enter}"
Sleep, 1000
WinClose, % WinName
return

Я правильно вас понял, или можно как-то упростить? Как считаете?

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

10

Re: AHK: Настройки сетевого адаптера

Горячую клавишу можно и в одну строчку уместить:

F10:: Run, netsh interface ip add dnsservers %Conect_Name% %IP_Adress%, , Hide

11

Re: AHK: Настройки сетевого адаптера

Супер!
Спасибо!

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

12 (изменено: creature.ws, 2013-01-24 10:14:39)

Re: AHK: Настройки сетевого адаптера

В таком случае, версия AHK не имеет значения.

Версия определяет реализацию. Для актуальной:

alternateDNS := "8.8.4.4"

WMI := ComObjGet("winmgmts:\\" . A_ComputerName . "\root\cimv2")
query := "SELECT DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE"

for NetAdapter in WMI.ExecQuery(query) {
    NewDNSServerSearchOrder := NetAdapter.DNSServerSearchOrder
    NewDNSServerSearchOrder[1] := alternateDNS
    NetAdapter.SetDNSServerSearchOrder(NewDNSServerSearchOrder)
}

13

Re: AHK: Настройки сетевого адаптера

creature.ws пишет:

В таком случае, версия AHK не имеет значения.

Версия определяет реализацию. Для актуальной:

alternateDNS := "92.168.250.22"

WMI := ComObjGet("winmgmts:\\" . A_ComputerName . "\root\cimv2")
query := "SELECT DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE"

for NetAdapter in WMI.ExecQuery(query) {
    NewDNSServerSearchOrder := NetAdapter.DNSServerSearchOrder
    NewDNSServerSearchOrder[1] := alternateDNS
    NetAdapter.SetDNSServerSearchOrder(NewDNSServerSearchOrder)
}

Этот код, после запуска выдаёт у меня следующую ошибку:
http://migo.ucoz.ru/AHK/01010101010.jpg

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

14 (изменено: creature.ws, 2013-01-27 17:11:56)

Re: AHK: Настройки сетевого адаптера

Попробуйте не копировать DNSServerSearchOrder в NewDNSServerSearchOrder,
а предварительно его создать и заполнить.

15

Re: AHK: Настройки сетевого адаптера

То что надо, спасибо!

Дело в том что мои познания не идут дальше AHK. И эта функция для меня - тёмный лес...
creature.ws!
А если речь пойдет о Всех настройках сетевого адаптера?

Возможно такую же функцию написать для:
IP Адрес:
Маска подсети:
Шлюз:
DNS:
Альтернативный DNS: (Уже есть)

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

16

Re: AHK: Настройки сетевого адаптера

Win32_NetworkAdapterConfiguration class содержит  необходимые методы.
SetGateways для маски и шлюза, SetDNSServerSearchOrder для dns, EnableStatic для ip aдрес.

17

Re: AHK: Настройки сетевого адаптера

Немогу проследить аналогию..

Если вам не трудно, адаптируйте пожалуйста этот скрипт:

alternateDNS := "8.8.4.4"

WMI := ComObjGet("winmgmts:\\" . A_ComputerName . "\root\cimv2")
query := "SELECT DNSServerSearchOrder FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE"

for NetAdapter in WMI.ExecQuery(query) {
    NewDNSServerSearchOrder := NetAdapter.DNSServerSearchOrder
    NewDNSServerSearchOrder[1] := alternateDNS
    NetAdapter.SetDNSServerSearchOrder(NewDNSServerSearchOrder)
}

для команды: EnableStatic
Может быть тогда смогу понять...




WMI.ExecQuery(query)

Насколько я понимаю, ссылается на функцию.. Среди встроенных функций, таковую не могу найти, в теле скрипта её нет.. Как этот код работает - не понимаю..

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

18 (изменено: creature.ws, 2013-01-29 21:12:22)

Re: AHK: Настройки сетевого адаптера

Примеры на VBS: WMI Tasks: Networking
WMI SWbemServices object.
ExecQueryExecQuery метод этого объекта.
WMI.ExecQuery(query) — при данном query — «коллекция сетевых адаптеров» для которых флаг IPEnabled = true
for NetAdapter in WMI.ExecQuery(query)  — перебор коллекции.
NetAdapter.SetDNSServerSearchOrder() — вызов метода SetDNSServerSearchOrder класса Win32_NetworkAdapterConfiguration в контексте текущего адаптера.

NetAdapter.EnableStatic() — вызов метода EnableStatic. В качестве агрумента этому методу следует передать объект (предварительно созданный с помощью встроенной функции ComObjArray) содержащий нужные параметры.

19

Re: AHK: Настройки сетевого адаптера

Попробовал разобраться - это для меня слишком сложно..

Static := "192.168.0.151"

WMI := ComObjGet("winmgmts:\\" A_ComputerName "\root\cimv2")
query := "SELECT EnableStatic FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE"

for NetAdapter in WMI.ExecQuery(query) {
    NewEnableStatic := NetAdapter.EnableStatic
    NewEnableStatic[1] := Static
    NetAdapter.EnableStatic(NewEnableStatic)
}

На этот код Айпи адрес даже и не почесался..

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

20 (изменено: creature.ws, 2013-01-31 20:11:34)

Re: AHK: Настройки сетевого адаптера

По ссылкам в сообщении #18 можно найти пример на vbs:

+ открыть спойлер
strComputer = "."
Set objWMIService = GetObject( _
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapterConfiguration " _
        & "where IPEnabled=TRUE")
strIPAddress = Array("192.168.1.141")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.100")
strGatewayMetric = Array(1)
 
For Each objNetAdapter in colNetAdapters
    errEnable = objNetAdapter.EnableStatic( _
        strIPAddress, strSubnetMask)
    errGateways = objNetAdapter.SetGateways(_
        strGateway, strGatewaymetric)
Next

От него отталкивайтесь, а не от кода из сообщения #12

В Autohotkey, действие:

strIPAddress = Array("192.168.1.141")

будет выглядеть как:

IPAddress := ComObjArray(8, 1)
IPAddress[0] := "192.168.1.141"
+ открыть спойлер

Если в скрипте подразумевается работа только с массивами, применимыми в качестве параметров методов COM объектов, то можно переопределить «родную» Array():

Array(Args*) {
    count := Args.MaxIndex()
    Array := ComObjArray(8, count)

    loop %count%
        Array[A_Index - 1] := Args[A_Index]

    return Array
}

21

Re: AHK: Настройки сетевого адаптера

Если я правильно понимаю, то первый этап - это создание безопасных массивов для работы с COM. (Не понимаю для чего, но судя по всему надо.)

Var_IPAddress := "192.168.60.26"
IPAddress := ComObjArray(8, 1)            
IPAddress[0] := Var_IPAddress

Var_SubnetMask := "255.255.255.0"
SubnetMask := ComObjArray(8, 1)            
SubnetMask[0] := Var_SubnetMask

Var_Gateway := "192.168.0.6"
Gateway := ComObjArray(8, 1)            
Gateway[0] := Var_Gateway

MsgBox, 64, Массивы для "COM", % "Айпи: " IPAddress[0] "`nМаска: " SubnetMask[0] "`nШлюз: " Gateway[0]               
ExitApp

То есть, этот код это первая часть скрипта. Я правильно понимаю?

AutoHotKey Version: 1.1.09.02
Не спеши, а то успеешь..

22 (изменено: creature.ws, 2013-02-02 06:35:34)

Re: AHK: Настройки сетевого адаптера

этот код это первая часть скрипта

Часть этого кода будет присутствовать в скрипте.