Помогите исправить скрипт, который настраивает сетевую карту, чтобы он работал с массивом из вне. На схеме верхняя часть которую я использую у себя работает, но при различном количестве айпи добавлять удалять точки неудобно. Нижняя часть схемы не работает, ошибка в работе с массивами.
code_33495.txt
Этот топик читают: Гость
Ответов: 36
Рейтинг: 2
|
|||
карма: 1 |
| ||
файлы: 1 | code_33495.txt [3.4KB] [160] |
Ответов: 1343
Рейтинг: 31
|
|||
полагаю надо так?
|
|||
карма: 2 |
| ||
файлы: 1 | code_33496.txt [2.2KB] [181] |
Ответов: 36
Рейтинг: 2
|
|||
Нет это не то, сетевой карте присваивается несколько айпиадресов, т.е сетевому адаптеру должен назначаться весь массив сразу, а такая схема даст только поочередную смену. А мне нужно маштабировать от 1 до 64
как пример кусок кода: code_33497.txt Так работает и назначается 16 айпи на сетевую, вот как работать с массивом из вне, в примерах есть но не работает, где то ошибка у меня, а где не могу найти |
|||
карма: 1 |
| ||
файлы: 1 | code_33497.txt [2.3KB] [135] |
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
tsdima писал(а):
Добавил возможность работы с массивами из скрипта, например:
Примеры в публикаторе: http://www.hiasm.com/sha/shatools.php?q=5&id=157 Конкретно ваш случай:
|
|||
карма: 6 |
|
Ответов: 36
Рейтинг: 2
|
|||
Не получается, сам массив доступен и я могу работать с любым элементом
но в этой строке errEnable = objNetCard.EnableStatic(arrIPAddress, arrSubnetMask) используется сам массив, а не отдельный элемент В таком исполнении работать не хочет, при этом с точки Sys.onData1 получаю нужный элемент Sub doWork (Data, Index) Set ip1 = sys.ip1 Set mask = sys.mask Set gate1 = sys.gate1 dns1 = sys.dns1 dns2 = sys.dns2 strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & " ootcimv2") Set colNetCards = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") On Error Resume Next For Each objNetCard in colNetCards arrDNSServers = Array(dns1, dns2) errEnable = objNetCard.EnableStatic(ip1, mask) errGateways = objNetCard.SetGateways(gate1) objNetCard.SetDNSServerSearchOrder(arrDNSServers) Next Sys.onData1 (ip1.get(0)) End Sub Скрипт который ниже работает, только массив тут собирается внутри скрипта arrIPAddress = Array(ip1, ip2), в чем разница между массивами? Sub doWork (Data, Index) ip1 = sys.ip1 ip2 = sys.ip2 mask = sys.mask gate1 = sys.gate1 dns1 = sys.dns1 dns2 = sys.dns2 arrIPAddress = Array(ip1, ip2) arrSubnetMask = Array(mask, mask) arrGateways = Array(gate1) arrDNSServers = Array(dns1, dns2) strComputer = "." Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & " ootcimv2") Set colNetCards = objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True") On Error Resume Next For Each objNetCard in colNetCards errEnable = objNetCard.EnableStatic(arrIPAddress, arrSubnetMask) errGateways = objNetCard.SetGateways(arrGateways) objNetCard.SetDNSServerSearchOrder(arrDNSServers) Next Sys.onData1 "1" End Sub Еще раз уточняю сетевая карта одна, а присвоить айпиадресов мне нужно от 1 до 64. |
|||
карма: 1 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Попробуйте так:
|
|||
карма: 6 |
|
Ответов: 36
Рейтинг: 2
|
|||
Не работает, может с типами что то, пошел другим путем, по формату создаю скрипт и выполняю
code_33498.txt |
|||
карма: 1 |
| ||
файлы: 1 | code_33498.txt [4.5KB] [143] |
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
EnableStatic of class Win32_NetworkAdapterConfiguration требует на входе аргументы статического массива, а не динамического.
|
|||
карма: 6 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 4 раз(а), последний 2025-01-09 23:46:12 |
|||
карма: 0 |
|
Главный модератор
Ответов: 2999
Рейтинг: 396
|
|||
Можно:
вот так
|
|||
карма: 6 |
|
10