Смена DNS только на активном сетевом интерфейсе.
|
Anton04, расскажите, что отличает «текущий (активный) сетевой интерфейс» от прочих.
|
Цитата:
Цитата Iska
что отличает «текущий (активный) сетевой интерфейс» от прочих. »
|
Активный сетевой интерфейс это тот на котором, на данный момент времени, установлено соединение (поднят линк), т.е. подключен к свичу/wi-fi или другому сетевому оборудованию .
|
Тогда почему:
Цитата:
Цитата Anton04
Данное задание напоминает топик Смена адресов DNS на всех компах в домене, но предложенный там вариант не совсем подходит, а именно нужно смена dns только на текущем (активном) интерфейсе, не затрагивая остальные интерфейсы »
|
не подходит? Там ведь есть:
Цитата:
Код:
"Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE"
|
|
Честно, как то попытался его запустить не заработал, а в самом коде я профан. Если не трудно подредактируйте тот скрипт под текущую задачу?
|
Если речь про это:
то, можно, например, так:
читать дальше »
Код:
Option Explicit
Dim objSWbemObjectEx
With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")
For Each objSWbemObjectEx In .ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'True'")
With objSWbemObjectEx
WScript.Echo "[" & .Index & "]", .Description, "(" & .MACAddress & ")", .SettingID
If .SetDNSServerSearchOrder(Array("192.168.224.2", "192.168.224.3", "192.168.224.4", "192.168.224.5")) = 0 Then
WScript.Echo "Successfully assign DNS server(s) to connection"
Else
WScript.Echo "Can't assign DNS server(s) to connection"
End If
End With
Exit For
Next
End With
WScript.Quit 0
Если Вам помимо того ещё и статику задавать надо, то: Script Assign a Static IP Address.
|
Ну это одно и тоже что и на первой закладке, так что конечно пойдёт!
Цитата:
Цитата Iska
то, можно, например, так: »
|
Только вод вывод сообщений вообще не нужен, а так работает идеально. :bow:
Что нужно закомментировать чтобы убрать вывод сообщений?
Цитата:
Цитата Iska
Если Вам помимо того ещё и статику задавать »
|
Нет, статику трогать не надо, только DNS.
|
Цитата:
Цитата Anton04
Ну это одно и тоже что и на первой закладке, … »
|
Отчасти. На первой вкладке можно задать не более двух.
Цитата:
Цитата Anton04
Только вод вывод сообщений вообще не нужен, а так работает идеально.
Что нужно закомментировать чтобы убрать вывод сообщений? »
|
1. Поставить символ апострофа «'» перед обеими «WScript.Echo "…"».
2. Просто удалить строки с «WScript.Echo "…"».
3. Указывать параметром скрипта при его запуске параметр пакетной обработки «//b».
|
Iska,
Ещё раз огромное спасибо. Решение более чем устраивает.
Удачи Вам.
|
Можно подниму тему.
В компании сменился PDC, старый адрес DNS скоро будет неактивен, нужно на всех серверах со статикой прописать обновленный DNS.
1. Нужно поменять только 2й DNS на определенных серверах. В том числе и на домен контроллерах.
2. Нужно поменять оба DNS
3. Есть некоторое количество машин со статикой, на W7, там тоже надо поменять
Какой кусок скрипта нужно использовать по ссылке выше? Как скормить скрипту список серверов? Только для активного адаптера.
|
Собственно разобрался сам. Скрипт на PowerShell.
В файл servers.txt заносим имена целевых машин, в коде меняем путь, если это необходимо.
Скрипт меняет DNS на активном сетевом интерфейсе.
Код для смены обоих DNS
Цитата:
$Computerlist = get-content "C:\servers.txt"
foreach ($computername in $computerlist)
{$result = get-wmiobject win32_pingstatus -filter "address='$computername'"
if ($result.statuscode -eq 0)
{
$DNSlist = $(get-wmiobject win32_networkadapterconfiguration -computer $computername -Filter ‘IPEnabled=true’).dnsserversearchorder
$priDNS = $DNSlist | select-object -first 1
$dnsservers =@("192.168.0.1","192.168.0.2")
Write-host "Changing DNS IP's on $computername" -b "Yellow" -foregroundcolor "black"
$remoteNic = get-wmiobject -class win32_networkadapter -computer $computername | where-object {$_.netconnectionID -eq "Ethernet"}
$index = $remotenic.index
$change = get-wmiobject win32_networkadapterconfiguration -computer $computername | where-object {$_.IpEnabled -match "True"}
$change.SetDNSServerSearchOrder($DNSservers) | out-null
$changes = $(get-wmiobject win32_networkadapterconfiguration -computer $computername -Filter ‘IPEnabled=true’).dnsserversearchorder
Write-host "$computername's Dns IP $changes"
}
else
{
Write-host "$Computername is down cannot change IP address" -b "Red" -foregroundcolor "white"
}
}
|
Код для замены только Secondary DNS
Цитата:
$Computerlist = get-content "C:\servers.txt"
foreach ($computername in $computerlist)
{$result = get-wmiobject win32_pingstatus -filter "address='$computername'"
if ($result.statuscode -eq 0)
{
$DNSlist = $(get-wmiobject win32_networkadapterconfiguration -computer $computername -Filter ‘IPEnabled=true’).dnsserversearchorder
$priDNS = $DNSlist | select-object -first 1
$dnsservers =@($priDNS,"192.168.0.2")
Write-host "Changing DNS IP's on $computername" -b "Yellow" -foregroundcolor "black"
$remoteNic = get-wmiobject -class win32_networkadapter -computer $computername | where-object {$_.netconnectionID -eq "Ethernet"}
$index = $remotenic.index
$change = get-wmiobject win32_networkadapterconfiguration -computer $computername | where-object {$_.IpEnabled -match "True"}
$change.SetDNSServerSearchOrder($DNSservers) | out-null
$changes = $(get-wmiobject win32_networkadapterconfiguration -computer $computername -Filter ‘IPEnabled=true’).dnsserversearchorder
Write-host "$computername's Dns IP $changes"
}
else
{
Write-host "$Computername is down cannot change IP address" -b "Red" -foregroundcolor "white"
}
}
|
|
Время: 19:11.
© OSzone.net 2001-