Управление сетями Windows с помощью сценариев (Часть 6)

Published on Февраль 18, 2009 by   ·   Комментариев нет

Давайте снова вернемся к сценарию под названием ChangeIPAddress.vbs, который мы разработали для изменения IP адреса сетевого адаптера (network adapter):

 Option Explicit  Dim objWMIService  Dim objNetAdapter  Dim strComputer       Dim strAddress       Dim arrIPAddress  Dim arrSubnetMask  Dim colNetAdapters  Dim errEnableStatic  If WScript.Arguments.Count = 0 Then       Wscript.Echo "Usage: ChangeIPAddress.vbs new_IP_address"       WScript.Quit  End If  strComputer = "."  strAddress = Wscript.Arguments.Item(0)  arrIPAddress = Array(strAddress)  arrSubnetMask = Array("255.255.255.0")  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")  For Each objNetAdapter in colNetAdapters       errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)  Next

Обратите внимание, что я удалил комментарии из кода, а также код, который позволял вывести результат.

Теперь вспомните, что делает этот сценарий:

  1. Он подключается к пространству имен root\cimv2 namespace на локальном компьютере.
  2. Он использует предложение SELECT для получения набора конфигураций сетевых адаптеров (network adapter configurations), которые работают и связаны с TCP/IP.
  3. Он изменяет IP адаптера на значение, указанное в качестве параметра в командной строке.

Предположим, что мы сохранили этот сценарий в папке C:\localtest на компьютере с операционной системой Windows XP, статический IP адрес которой 172.16.11.43. Если мы откроем командную строку под учетной записью администратора на компьютере и запустим этот сценарий, то IP адрес компьютера поменяется на 172.16.11.54:

 C:\locatest>ipconfig    Windows IP Configuration         Ethernet adapter Local Area Connection:            Connection-specific DNS Suffix  . :          IP Address. . . . . . . . . . . . : 172.16.11.43          Subnet Mask . . . . . . . . . . . : 255.255.255.0          Default Gateway . . . . . . . . . : 172.16.11.1    C:\locatest>ChangeIPAddress.vbs 172.16.11.54  Microsoft (R) Windows Script Host Version 5.6  Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.         C:\locatest>ipconfig    Windows IP Configuration         Ethernet adapter Local Area Connection:            Connection-specific DNS Suffix  . :          IP Address. . . . . . . . . . . . : 172.16.11.54          Subnet Mask . . . . . . . . . . . : 255.255.255.0          Default Gateway . . . . . . . . . : 172.16.11.1    C:\locatest>

Подсказка #1: Не забудьте, что для изменения IP адреса на компьютере с операционной системой Windows XP требуются права локального администратора (local administrator). Поэтому, если в настоящий момент вы зашли на компьютер с правами пользователя домена (как это сделал я), то вы должны открыть командную строку (command prompt) и набрать runas /user:administrator cmd.exe для того, чтобы открыть вторую командную строку, которая работает с правами администратора, а затем запустить сценарий из этой второй командной строки (command prompt).

Но что, если мы хотим запустить этот сценарий на одной машине (например, xp2.contoso.com) и использовать его для изменения IP адреса на другой машине (например, xp.contoso.com)? Другими словами, мы хотим запустить этот сценарий удаленно для удаленного компьютера с операционной системой Windows XP. Как мы можем это сделать?

Первая попытка

Давайте начнем с того, что зайдем на рабочую станцию нашего администратора xp2.contoso.com с правами администратора домена (domain admin), которые в нашей сети имеет Мари Джонс (Mary Jones) – наш администратор. Мы должны сделать это потому, что администраторы домена (domain admin) имеют права локальных администраторов на всех компьютерах в домене, поэтому, когда мы запустим наш сценарий с рабочей станции нашего администратора, то он должен сработать, верно?

Давайте предположим, что наш сценарий под названием ChangeIPAddress.vbs находится в папке C:\tools на компьютере нашего администратора под названием xp.contoso.com. Давайте запустим командную строку на этом компьютере и наберем следующую строку:

 C:\Documents and Settings\mjones>cd \tools  C:\tools>notepad ChangeIPAddress.vbs

Наш сценарий откроется в Блокноте (Notepad), и мы изменим следующую строку:

 strComputer = "."

чтобы прочитать следующее:

strComputer = "xp2 "

Затем мы выберем File | Save для сохранения изменений, а затем закроем Блокнот (Notepad). Теперь давайте запустим наш сценарий:

 C:\tools>ChangeIPAddress.vbs 172.16.11.65  Microsoft (R) Windows Script Host Version 5.6  Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.    C:\tools\ChangeIPAddress.vbs(20, 1) Microsoft VBScript runtime error:    The remote  server machine does not exist or is unavailable: 'GetObject'         C:\tools>

Обратите внимание, что пройдет некоторое количество времени, прежде чем наконец появится сообщение об ошибке, о котором мы упоминали ранее. Но сработала ли вся операция? Хорошо, если я зайду на удаленный компьютер под названием xp2.contoso.com, открою командную строку и наберу команду ipconfig, то увижу следующее:

 C:\locatest>ipconfig    Windows IP Configuration         Ethernet adapter Local Area Connection:            Connection-specific DNS Suffix  . :          IP Address. . . . . . . . . . . . : 172.16.11.43          Subnet Mask . . . . . . . . . . . : 255.255.255.0          Default Gateway . . . . . . . . . : 172.16.11.1    C:\locatest>

Итак, я могу увидеть, что адрес этой машины по-прежнему 172.16.11.43, таким образом сценарий не сработал.

Так что же прошло не так? Обратите внимание, что ошибка времени выполнения (runtime error), которая возникла, сообщает о проблеме при выполнении 20 строки сценария, а в нашем случае 20 строка выглядит так:

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Возникает ощущение, что сценарий не может подключиться к службе WMI на удаленной машине. Из-за чего такое могло произойти?

Вторая попытка

Может быть, что-то нужно сделать с брандмауэром Windows Firewall на удаленном компьютере (remote machine).

Помните, что в операционной системе Windows XP с установленным пакетом обновления SP2 есть брандмауэр (firewall), который блокирует основной входящий трафик, за исключением того, который настроен в качестве исключения. Самый простой способ проверить наше предположение – это отключить брандмауэр Windows Firewall на удаленном компьютере. Давайте сделаем это, зайдя на компьютер под названием xp2.contoso.com с правами администратора, откроем апплет Windows Firewall (Брандмауэр) на Control Panel (панель управления), и выберем настройку Off (выключить) на закладке General (Общие).

Теперь давайте снова запустим сценарий с рабочей станции администратора:

 C:\tools>ChangeIPAddress.vbs 172.16.11.65Microsoft (R) Windows Script Host Version 5.6  Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.    C:\tools\ChangeIPAddress.vbs(23, 6) SWbemObjectEx: The remote procedure call failed.         C:\tools>

Хмм, появилась другая ошибка, и снова пройдет некоторое количество времени, до тех пор пока эта ошибка появится. Но по крайней мере в этот раз возникла другая ошибка, на этот раз в строке 23, которая в нашем случае:

 errEnableStatic = objNetAdapter.EnableStatic(arrIPAddress, arrSubnetMask)

Однако, теперь, когда я наберу команду ipconfig в командной строке на удаленном компьютере, то увижу следующее:

 C:\locatest>ipconfig    Windows IP Configuration         Ethernet adapter Local Area Connection:            Connection-specific DNS Suffix  . :          IP Address. . . . . . . . . . . . : 172.16.11.65          Subnet Mask . . . . . . . . . . . : 255.255.255.0          Default Gateway . . . . . . . . . : 172.16.11.1    C:\locatest>

Итак, кажется, что сценарий сработал! У нас получилось! Но остается две загадки:

  1. Мы не хотим, что брандмауэр Windows Firewall был отключен только из-за того, что нам нужно запускать удаленные сценарий. Поэтому нам необходимо узнать исключение, которое позволит нам запускать удаленные сценарии при работающем брандмауэре Windows Firewall.
  2. И что по поводу ошибки RPC error, которую мы видели выше? Сценарий по- прежнему возвращает эту ошибку. Почему?

Исключения для удаленного выполнения сценариев

Давайте снова включим брандмауэр Windows Firewall на удаленном компьютере. Это приведет к блокировке нашего сценария на этом компьютере. Теперь из командной строки с правами администратора на удаленной машине наберите команду gpedit.msc. В результате этого на этом компьютере запустится Local Group Policy (локальная политика группы). Перейдите к следующей настройке политики (смотрите Рисунок 1):

Computer Configuration\Administrative Templates\Network\Network Connections\Domain Profile\Windows Firewall: Allow remote administration exception

172 16 11 43
Рисунок 1: Настройка политики брандмауэра Windows Firewall для подключения удаленного администрирования

Дважды щелкните правой кнопкой мыши на этой настройке политики и подключите ее для локальной подсети (local subnet) (Рисунок 2). Мы делаем это потому, что знаем, что рабочая станция нашего администратора находится в той же подсети, что и наш компьютер.

Как изменить IP адрес удаленного компьютера?
Рисунок 2: Установка исключения для удаленного администрирования

Подсказка #2: Конечно, вы можете захотеть сделать это по-другому, и настроить эту политику для объекта политики группы (Group Policy Object или GPO) в домене, вместо того, чтобы делать это локально. Таким способом вам не нужно даже прикасаться к удаленной машине, чтобы задать это исключения для брандмауэра (firewall)!

Теперь давайте запустим сценарий снова с рабочей станции администратора и попытаемся изменить IP адрес удаленной машины с 172.16.11.65 на 172.16.11.66:

 C:\tools>ChangeIPAddress.vbs 172.16.11.66  Microsoft (R) Windows Script Host Version 5.6  Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.    C:\tools\ChangeIPAddress.vbs(23, 6) SWbemObjectEx: The remote procedure call failed.         C:\tools>

Та же самая ошибка, что и прежде, но теперь, когда я набрал команду ipconfig в командной строке на удаленной машине, я увидел следующее:

 C:\locatest>ipconfig    Windows IP Configuration         Ethernet adapter Local Area Connection:            Connection-specific DNS Suffix  . :          IP Address. . . . . . . . . . . . : 172.16.11.66          Subnet Mask . . . . . . . . . . . : 255.255.255.0          Default Gateway . . . . . . . . . : 172.16.11.1    C:\locatest>

Это сработало! Итак, при включенном брандмауэре Windows Firewall на удаленной машине с помощью политики группы (Group Policy), которая позволяет подключить удаленное администрирование для брандмауэра, мы можем удаленно изменять IP адрес компьютера, путем запуска сценария с рабочей станции администратора.

Итак, мы решили первую загадку, а как насчет второй?

Я люблю загадки, поэтому давайте оставим ее до следующей статьи из этого цикла.

www.windowsnetworking.com




Смотрите также:

Tags: , , ,

Readers Comments (Комментариев нет)




Да человек я, человек! =)




Exchange 2007

Проведение мониторинга Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 3)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Проведение мониторинга Exchange 2007 с помощью диспетчера System ... [+]

Практическое рассмотрение перехода с Exchange 2003 на Exchange 2007 (часть 1)

Введение В этой статье из нескольких частей я хочу показать вам процесс, который недавно использовал для перехода с существующей среды Exchange 2003 ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 2)

Если вы пропустили первую часть этой серии, пожалуйста, прочтите ее по ссылке Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (Часть ... [+]

Мониторинг Exchange 2007 с помощью диспетчера System Center Operations Manager 2007 (часть 2)

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Мониторинг Exchange 2007 с помощью диспетчера System Center Operations ... [+]

Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 5)

Если вы пропустили предыдущие части этой серии статей, перейдите по ссылкам: Подробное рассмотрение подготовки Active Directory для Exchange 2007 (часть 1) ... [+]

Установка и настройка Exchange 2007 из командной строки (Часть 3)

If you missed the previous parts in this article series please read: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование инструмента Exchange Server Remote Connectivity Analyzer Tool (часть 1)

Инструмент ExRCA Текущий выпуск инструмента предоставляется только в целях тестирования и оснащен 5 опциями: Тест подключения Outlook 2007 Autodiscover Тест подключения Outlook 2003 RPC ... [+]

Развертывание сервера Exchange 2007 Edge Transport (часть 5)

Если вы хотите прочитать предыдущие части этой серии статей, перейдите по ссылкам: Развертывание сервера Exchange 2007 Edge Transport (часть 1) Развертывание ... [+]

Установка и настройка Exchange 2007 из командной строки (часть 2)

Если вы пропустили первую статью данного цикла, пожалуйста, перейдите по ссылке: Exchange 2007 Install and Configuration from the command line (Part ... [+]

Использование интегрированных сценариев Using Exchange Server 2007 – часть 2: генерирование отчетов агента Transport AntiSpam Agent

Если вы пропустили предыдущую часть этой серии статей, перейдите по ссылке Использование интегрированных сценариев Using Exchange Server 2007 – часть ... [+]