|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаленная смена IP |
|
CMD/BAT - [решено] Удаленная смена IP
|
Новый участник Сообщения: 12 |
Здравствуйте. Есть сеть на 80 компов winXP. Компы в домене под win2003. Подняты DHCP и DNS . На компах IP адрес, маска, шлюз, днс выставлены вручную. Подскажите пожалуйста как удаленно(скриптом), через политики, сделать так что бы IP адреса, маска, шлюз, днс выдавались автоматом.
|
|
Отправлено: 09:39, 18-08-2009 |
Ветеран Сообщения: 968
|
Профиль | Отправить PM | Цитировать Цитата verna:
помогите кто нибудь эти скрипты чуть изменить для логон скрипта . по типу если IP тачка получает по DHCP то меняем на статический если имя компа тото то меняем IP на такой то и прописываем маску , днс , шлюз. такой то IP такой ТО iP такоц то Ip |
|
Отправлено: 15:45, 25-08-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 72
|
Профиль | Сайт | Отправить PM | Цитировать batyaPS, так надо не просто скрипт скопровать, а заполнить параметры
' Исходные данные strComputer = "old_ip_address" - текущий IP адрес sSubnetMask = "old_subnet_mask" - текущая маска сети sNewIPAddress = "new_ip_address" - новый IP адрес sWinsSecondaryServer = "second_wins_server" - можно не запонять Скрипт запускается с компьютера администратора и менят настойки сетевого интерфейса указанного компьютера. Цитата batyaPS:
Вот пример заполнения исходных данных ' Исходные данные strComputer = "172.31.26.123" sSubnetMask = "255.255.240.0" sNewIPAddress = "172.31.26.123" sWinsSecondaryServer = "" В данном случае перевожу комп с динамики на статику, поэтому новый и старый адреса одинаковые |
|
------- Отправлено: 14:22, 29-12-2009 | #12 |
Ветеран Сообщения: 968
|
Профиль | Отправить PM | Цитировать Цитата vitaliyboch:
еще , зависит ли работа скрипта от кол-ва сетевых карт ? и как он определяет на каком интерфейсе менять настройки . ? |
|
Отправлено: 21:39, 01-01-2010 | #13 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать batyaPS,
еще , зависит ли работа скрипта от кол-ва сетевых карт ? и как он определяет на каком интерфейсе менять настройки . ? Не зависит. Скрипт ищет интерфейс с именем 'Local Area Connection' . Все остальное игнорируется. Чтобы скрипт определил все подключенные проводные ethernet соединения, нужно заменить в скрипте set colItems = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter " & "Where NetConnectionID = " & "'Local Area Connection'") на set colItems = objWMIService.ExecQuery ("Select * from Win32_NetworkAdapter Where NetConnectionID Like 'Local%'") Но это тоже не поможет, тк логика работы скрипта подразумевает, что выбирается макадрес только из последнего экземпляра коллекции colItems: for each objItem in colItems strMACAddress = objItem.MACAddress next Короче, автору надо подправить скрипт |
Отправлено: 11:26, 02-01-2010 | #14 |
Пользователь Сообщения: 72
|
Профиль | Сайт | Отправить PM | Цитировать Цитата batyaPS:
Цитата batyaPS:
|
||
------- Отправлено: 00:33, 08-01-2010 | #15 |
Ветеран Сообщения: 968
|
Профиль | Отправить PM | Цитировать Цитата vitaliyboch:
Может нужна перезагрузка ? |
|
Отправлено: 14:16, 08-01-2010 | #16 |
Пользователь Сообщения: 140
|
Профиль | Отправить PM | Цитировать По поводу почему после отработки скрипта ничего не меняется.
Скорее всего Вы используете русскую WinXP. А в ней проводной интерфейс по умолчанию называется "Подключение по локальной сети" Теперь обратимся к wmi запросу из скрипта: set colItems = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter " & "Where NetConnectionID = " & "'Local Area Connection'") Очевидно, что интерфейса с именем Local Area Connection в русской XP нет, поэтому скрипт не находит интерфейса и завершается, так ничего не изменив. Чтобы wmi-запрос мог работать и с англ. и с русской XP, поменяйте приведенную строку скрипта на set colItems = objWMIService.ExecQuery ("Select * From Win32_NetworkAdapter Where NetConnectionID like '%локальной%' or NetConnectionID like 'Local%'") ЗЫ: Предполагаю, что исправив эту ошибку, через несколько строк Вы упретесь в следующую. (Такой уж скрипт!) |
Последний раз редактировалось fomin_, 08-01-2010 в 21:58. Отправлено: 17:41, 08-01-2010 | #17 |
Пользователь Сообщения: 72
|
Профиль | Сайт | Отправить PM | Цитировать Вот модификация скрипта, но мне кажется, что будут проблемы при удаленной смене конфигурации адаптера, если задать разные значения IP адреса текущего и нового.
' Целевой компьютер mComputer = "." ' Новые сетевые параметры задаются конкретными значениями ' Аналогичные параметры задаются значением "The same" ' Пустые парамеры задаются значением "" mNewIPAddress = "The same" mNewSubnetMask = "The same" mNewDNSServer = "The same" mNewDefaultIPGateway = "The same" mNewWINSPrimaryServer = "The same" mNewWINSSecondaryServer = "The same" ' Рабочие массивы Dim mDNSServerList() Dim mDefaultIPGatewayList() Dim mGatewayMetricList() Dim mNewDNSServerList() Dim mNewDefaultIPGatewayList() Dim mNewGatewayMetricList() ' Подключение к пространству имен целевого компьютера Set mSWbemServices = GetObject("winmgmts:\\" & mComputer & "\Root\CIMv2") ' Получение коллекции адаптеров с указанным IP-адресом Set mAdapterList = mSWbemServices.ExecQuery ("Select * From Win32_NetworkAdapter") ' Получение MAC-адреса адаптера локального адаптера For Each mCurrentAdapter In mAdapterList If InStr(LCase(mCurrentAdapter.NetConnectionID), "локальн") > 0 _ Or InStr(LCase(mCurrentAdapter.NetConnectionID), "local") > 0 Then mMACAddress = mCurrentAdapter.MACAddress mCaption = mCurrentAdapter.Caption Exit For End If Next ' Получение коллекции параметров адаптера с указанным MAC-адресом Set mAdapterConfigList = mSWbemServices.ExecQuery _ ("Select * From Win32_NetworkAdapterConfiguration WHERE MACAddress = '" _ & mMACAddress & "'") ' Получение текущих параметров сетевого адаптера с указанным MAC-адресом For Each mCurrentAdapterConfig In mAdapterConfigList ' IP-адрес If IsNull(mCurrentAdapterConfig.IPAddress) = False Then For Each mCurrentIPAddress In mCurrentAdapterConfig.IPAddress mIPAddress = mCurrentIPAddress Exit For Next End If If mNewIPAddress = "The same" Then mNewIPAddress = mIPAddress mNewIPAddressList = Array(mNewIPAddress) ' Маска подсети If IsNull(mCurrentAdapterConfig.IPSubnet) = False Then For Each mCurrentIPSubnet In mCurrentAdapterConfig.IPSubnet mSubnetMask = mCurrentIPSubnet Exit For Next End If If mNewSubnetMask = "The same" Then mNewSubnetMask = mSubnetMask mNewSubnetMaskList = Array(mNewSubnetMask) ' DNS сервера If IsNull(mCurrentAdapterConfig.DNSServerSearchOrder) = False Then iCounter = 0 For Each mCurrentDNSServer In mCurrentAdapterConfig.DNSServerSearchOrder Redim Preserve mDNSServerList(iCounter) mDNSServerList(iCounter) = mCurrentDNSServer iCounter = iCounter + 1 Next End If If mNewDNSServer = "The same" Then For iCounter = 0 To UBound(mDNSServerList) Redim Preserve mNewDNSServerList(iCounter) mNewDNSServerList(iCounter) = mDNSServerList(iCounter) Next Else For iCounter = 0 To UBound(Split(mNewDNSServer,";")) Redim Preserve mNewDNSServerList(iCounter) mNewDNSServerList(iCounter) = Split(mNewDNSServer,";")(iCounter) Next End If ' Шлюзы If IsNull(mCurrentAdapterConfig.DefaultIPGateway) = False Then iCounter = 0 For Each mCurrentDefaultIPGateway In mCurrentAdapterConfig.DefaultIPGateway Redim Preserve mDefaultIPGatewayList(iCounter) mDefaultIPGatewayList(iCounter) = mCurrentDefaultIPGateway Redim Preserve mGatewayMetricList(iCounter) mGatewayMetricList(iCounter) = iCounter + 1 iCounter = iCounter + 1 Next End If If mNewDefaultIPGateway = "The same" Then For iCounter = 0 To UBound(mDefaultIPGatewayList) Redim Preserve mNewDefaultIPGatewayList(iCounter) mNewDefaultIPGatewayList(iCounter) = mDefaultIPGatewayList(iCounter) Redim Preserve mNewGatewayMetricList(iCounter) mNewGatewayMetricList(iCounter) = iCounter + 1 Next Else For iCounter = 0 To UBound(Split(mNewDefaultIPGateway,";")) Redim Preserve mNewDefaultIPGatewayList(iCounter) mNewDefaultIPGatewayList(iCounter) = Split(mNewDefaultIPGateway,";")(iCounter) Redim Preserve mNewGatewayMetricList(iCounter) mNewGatewayMetricList(iCounter) = iCounter + 1 Next End If ' WINS сервера If IsNull(mCurrentAdapterConfig.WINSPrimaryServer) = False Then mWINSPrimaryServer = mCurrentAdapterConfig.WINSPrimaryServer End If If mNewWINSPrimaryServer = "The same" Then If IsNull(mCurrentAdapterConfig.WINSPrimaryServer) = True Then mNewWINSPrimaryServer = "" Else mNewWINSPrimaryServer = mWINSPrimaryServer End If End If If IsNull(mCurrentAdapterConfig.WINSSecondaryServer) = False Then mWinsSecondaryServer = mCurrentAdapterConfig.WINSSecondaryServer End If If mNewWinsSecondaryServer = "The same" Then If IsNull(mCurrentAdapterConfig.WINSSecondaryServer) = True Then mNewWinsSecondaryServer = "" Else mNewWinsSecondaryServer = mWINSSecondaryServer End If End If Exit For Next ' Формирование сообщения по текущей и по будущей конфигурациям сетевого адаптера mInfoMessage = "Network adapter: " & mCaption & vbCrLf _ & "MAC address: " & mMACAddress & vbCrLf _ & "Current configuration:" & vbCrLf _ & vbTab & "IP address: " & mIPAddress & vbCrLf _ & vbTab & "Subnet mask: " & mSubnetMask & vbCrLf _ & vbTab & "Default Gateway: " & Join(mDefaultIPGatewayList,";") & vbCrLf _ & vbTab & "DNS servers: " & Join(mDNSServerList,";") & vbCrLf _ & vbTab & "WINS Primary Server: " & mWINSPrimaryServer & vbCrLf _ & vbTab & "WINS Secondary Server: " & mWINSSecondaryServer & vbCrLf _ & "New configuration:" & vbCrLf _ & vbTab & "IP address: " & mNewIPAddress & vbCrLf _ & vbTab & "Subnet mask: " & mNewSubnetMask & vbCrLf _ & vbTab & "Default Gateway: " & Join(mNewDefaultIPGatewayList,";") & vbCrLf _ & vbTab & "DNS servers: " & Join(mNewDNSServerList,";") & vbCrLf _ & vbTab & "WINS Primary Server: " & mNewWINSPrimaryServer & vbCrLf _ & vbTab & "WINS Secondary Server: " & mNewWINSSecondaryServer & vbCrLf _ & vbCrLf & "Please confirm the changes" & mNewWINSSecondaryServer & vbCrLf ' Окно подтверждения изменения настроек сетевого параметра mChangeFlag = MsgBox(mInfoMessage, vbOKCancel, "Network card settings change") If mChangeFlag = vbOK Then ' Установка нового IP адреса For Each mCurrentAdapterConfig in mAdapterConfigList errEnable = mCurrentAdapterConfig.EnableStatic _ (mNewIPAddressList, mNewSubnetMaskList) errGateways = mCurrentAdapterConfig.SetGateways _ (mNewDefaultIPGatewayList, mNewGatewayMetricList) errWINS = mCurrentAdapterConfig.SetWINSServer _ (mNewWINSPrimaryServer, mNewWinsSecondaryServer) errDNS = mCurrentAdapterConfig.SetDNSServerSearchOrder _ (mNewDNSServerList) Exit For Next ' Pезультат операции mInfoMessage = "Operation result:" & vbCrLf _ & "IP address error code: " & errEnable & vbCrLf _ & "Gateway error code: " & errGateways & vbCrLf _ & "DNS error code: " & errDNS & vbCrLf _ & "WINS error code: " & errWINS & vbCrLf Else mInfoMessage = "The operation is canceled" End If Wscript.Echo(mInfoMessage) |
------- Отправлено: 15:38, 23-06-2010 | #18 |
Пользователь Сообщения: 72
|
Профиль | Сайт | Отправить PM | Цитировать Как я и предполагал, существует проблема при смене IP адреса на компьютере из другого филиала. Текущий скрипт сначала меняет IP, а потом прописывает остальные параметры, но компьютер становится уже недоступен - нет верных настроек шлюза. Если изменить порядок внесения параметров и менять IP только после смены DNS серверов и шлюза, то шлюз оказывается пустым для статических параметров! Он почему-то прописывается в динамические характеристики.
Кто знает как обойти эту проблему? В этой части кода изменен порядок внесения параметров ------ errGateways = mCurrentAdapterConfig.SetGateways _ (mNewDefaultIPGatewayList, mNewGatewayMetricList) errWINS = mCurrentAdapterConfig.SetWINSServer _ (mNewWINSPrimaryServer, mNewWinsSecondaryServer) errDNS = mCurrentAdapterConfig.SetDNSServerSearchOrder _ (mNewDNSServerList) errEnable = mCurrentAdapterConfig.EnableStatic _ (mNewIPAddressList, mNewSubnetMaskList) ------- |
------- Отправлено: 10:41, 25-06-2010 | #19 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Применяется удаленная политика | Iad | Microsoft Windows NT/2000/2003 | 3 | 14-07-2009 14:26 | |
Разное - [решено] Удаленная Vista отображается в списке загрузки систем | Shmaser | Microsoft Windows Vista | 2 | 08-07-2009 18:58 | |
Решено | Удаленная установка Windows - BSOD | diamondsasha | Автоматическая установка Windows 2000/XP/2003 | 3 | 11-04-2006 07:47 | |
Удаленная авторизация | Malcomoffice | Microsoft Windows 2000/XP | 0 | 26-01-2006 00:36 | |
Удаленная дефрагментация | Dru | Microsoft Windows NT/2000/2003 | 9 | 24-12-2002 09:03 |
|