Скрипт пригодится для удалённого изменения на клиентских
ОС Windows настроек
TCP/IP, таких как
DNS и
WINS, в пределах текущего домена
Active Directory. Выполнять лучше всего из командной строки с повышенными привилегиями, используя: "
cscript имя_скрипта.vbs", получив таким образом удобный вывод информации о ходе работы алгоритма.
Во время выполнения
скрипт делает следующее:
1. Получает список всех машин в текущем домене.
2. Последовательно подключается к ним и проверяет интерфейсы с включённым протоколом
TCP/IP.
3. Если настройки
DNS и
WINS установлены, но не соответствуют адресам, заданным в переменных "
strPrimaryServer" и "
strSecondaryServer", то происходит изменение этих параметров.
Также запускающий скрипт пользователь обязательно должен обладать правами на подключение и настройку сетевых интерфейсов на всех удалённых
ОС.
ON ERROR RESUME NEXT
'Primary and Secondary DNS,WINS servers IPs
strPrimaryServer = "192.168.0.11"
strSecondaryServer = "192.168.0.12"
'..........................................
Const ADS_SCOPE_SUBTREE = 2
arrDNSServers = Array(strPrimaryServer, strSecondaryServer)
Set Info = CreateObject("AdSystemInfo")
arrDomLevels = Split(Info.DomainDNSName, ".")
strADsPath = "dc=" & Join(arrDomLevels, ",dc=")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select Name, netbootGUID, distinguishedName from 'LDAP://" & strADsPath & "' " _
& "Where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
WScript.Echo objRecordSet.Fields("Name")
strComputer = objRecordSet.Fields("Name")
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True and DHCPEnabled = False")
For Each objNetCard In colNetCards
If Not (UBound(Filter(objNetCard.DNSServerSearchOrder, strPrimaryServer)) > -1 And UBound(Filter(objNetCard.DNSServerSearchOrder, strSecondaryServer)) > -1) Then
objNetCard.SetDNSServerSearchOrder(arrDNSServers)
WScript.Echo "..........................Changed DNS!"
End If
If StrComp(objNetCard.WINSPrimaryServer, strPrimaryServer) Or StrComp(objNetCard.WINSSecondaryServer, strSecondaryServer) Then
objNetCard.SetWINSServer strPrimaryServer, strSecondaryServer
WScript.Echo ".........................Changed Wins!"
End If
Next
objRecordSet.MoveNext
Loop
Комментариев нет:
Отправить комментарий