Перейти к содержанию

Wmi


Smile

Рекомендуемые сообщения

да собственно вот код

тот вопрос уже отпал, но появился новый, пустячный =)

strComputer = "." 

Sub ChangeApapterConfiguration(strAdapter,strIP)
strRes=""
strMask="х.х.х.х"
strGateWay="х.х.х.х"
strDNS="х.х.х.х"
strPrimaryWINS="х.х.х.х"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set objShare = objWMIService.Get("Win32_NetworkAdapterConfiguration.Index='" & strAdapter & "'")

strRes=strRes & " IP=" & objShare.EnableStatic(Array(strIP), Array(strMask))
strRes=strRes & " GateWay=" & objShare.SetGateways(Array(strGateWay),Array(1))
strRes=strRes & " DNS=" & objShare.SetDNSServerSearchOrder(Array(strDNS))
strRes=strRes & " WINS=" & objShare.SetWINSServer(strPrimaryWINS,"")

If strRes<>" IP=0 GateWay=0 DNS=0 WINS=0" Then Wscript.Echo "Erorr:" & strRes
End Sub

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
'получаем все езернетовские адаптеры компа
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE AdapterType = 'Ethernet 802.3'",,48) 
'бежим по езернетовским адаптерам...
For Each objAdapter in colAdapters
'...получая конфиги поочередно по objAdapter.Index
Set colAdapters802_3Config = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Index=" & objAdapter.Index,,48) 
'бежим по конфигурациям езернетовского адаптера (вроде бы она всегда одна???)...
For Each objAdapter802_3Config in colAdapters802_3Config
 '...перебирая все установленные на адаптере IP-адреса
 For intIPAdressNo=0 to UBound(objAdapter802_3Config.IPAddress) 
 	'если находим на адаптере хотябы один адрес по списку, то это значит, что нужно изменить всеь конфиг адаптера на новый
 	SELECT Case objAdapter802_3Config.IPAddress(intIPAdressNo)
   Case "х.х.х.х": ChangeApapterConfiguration objAdapter.Index,"х.х.х.х"
   Case "х.х.х.х": ChangeApapterConfiguration objAdapter.Index,"х.х.х.х"
.........................................................................................................................
 	End Select
 Next
Next

задача такова: перевести сотню дугую компов в домене одним махом на другую подсеть =)

код работает, все стандартно, пихаю его в нетлогон и далее прописываю в гпо выполняться скрипту при загрузке

вопрос в том, как связать две даблички в одном запросе Win32_NetworkAdapter и Win32_NetworkAdapterConfiguration (у них есть ключ - поле Index)

мсдна нет на компе, а ковырять у мс на сайте че-то лениво

JOIN этот SQL не понимает =)

Ссылка на комментарий
Поделиться на другие сайты

короче

 

SELECT * FROM Win32_NetworkAdapter t1

LEFT JOIN

SELECT * FROM Win32_NetworkAdapterConfiguration t2

ON t1.Index=t2.Index

WHERE t1.AdapterType = 'Ethernet 802.3'

 

не канает

 

SELECT * FROM Win32_NetworkAdapter, Win32_NetworkAdapterConfiguration

WHERE

Win32_NetworkAdapter.Index=Win32_NetworkAdapterConfiguration.Index

AND

Win32_NetworkAdapter.AdapterType = 'Ethernet 802.3'

 

не канает тоже: матерится ужасно

Ссылка на комментарий
Поделиться на другие сайты

Smile

В одном запросе никак не связать:

 

FROM  Specifies the class that contains the properties listed in a SELECT statement. Windows Management Instrumentation (WMI) supports data queries from only one class at a time.
Ссылка на комментарий
Поделиться на другие сайты

понятно, придется читать его скл граммар...

кстати, странно, на некоторых адаптерах (всякие там минипорт ван и остальная хрень) скрипт не отрабатывал, пришлось немного поправить

Ссылка на комментарий
Поделиться на другие сайты

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

×
×
  • Создать...