Упрощаем задачу администратора при помощи автозапуска сценариев

Это ограничивает типы задач, которые может выполнять подобный сценарий. Сценарии, запускающиеся с центрального административного сервера или рабочей станции, могут запускаться в контексте служебной учетной записи, имеющей более широкие права. Такие сценарии могут запускаться во всем домене, либо по заданному списку компьютеров. Кроме того, сценарии для запуска с сервера используют только утилиты, допускающие удаленную работу. Так, некоторые встроенные команды, например net.exe недоступны для программ, запускающихся с сервера. При этом, если сценарий запускается для внесения изменений в политику для списка с именами компьютеров, системы, которые в данный момент выключены, часто не получают соответствующих изменений. Необходимо постоянно вести журнал ошибок для повторного запуска сценария на подобных компьютерах.

На компьютерах с Windows 2000 можно добавить систему в группу компьютеров или в организационное подразделение (OU) и использовать групповые политики Active Directory (AD) для запуска сценариев для группы или OU. Если добавить новые узлы в группу или OU, они автоматически становятся объектами воздействия GPO. Основанные на сценариях GPO запускаются каждый раз, когда система обращается к ним. Так, каждый раз, когда пользователь включает компьютер, запускаются примененные к этому компьютеру сценарии. Такая функциональность особенно полезна в тех средах, где используются переносные компьютеры, периодически подключающиеся к сети. Компьютеры не будут терять изменений, вносимых сценариями, поскольку каждый раз во время запуска на них будут запускаться сценарии, созданные для OU или для группы компьютеров, членом которой является система.

Я собрал несколько вопросов, наиболее часто задаваемых пользователями, чтобы показать, как можно использовать GPO для автоматического запуска сценариев на компьютерах. Предполагается, что читатели хорошо знакомы с тем, как использовать Microsoft Management Console (MMC) и оснастку Active Directory Users and Computers для создания GPO и добавления в созданный GPO сценариев для автоматического запуска. Пошаговые объяснения того, как добавить сценарий в GPO, даются во врезке "Добавление в GPO сценариев для автоматического запуска". Приведенные советы по автоматически запускаемым сценариям наиболее актуальны для сетевых сред, в которых пользователи ежедневно выключают и перезагружают компьютеры.

В. Могу ли я использовать запускаемые автоматически сценарии для изменения пароля локального администратора?

О. Вы можете использовать запускаемые автоматически сценарии для изменения пароля административной учетной записи на системах, которые являются членами компьютерной группы, где нужно поменять пароль. Следующая команда командной строки изменяет пароль учетной записи Administrator после перезагрузки компьютера.

Net user Administrator %1

Во врезке "Добавление в GPO сценариев для автоматического запуска" дается подробное описание добавления этого сценария в GPO. Для начала потребуется создать компьютерную группу, содержащую все компьютеры, являющиеся членами OU, на которые вы должны установить новый пароль. После этого сценарий добавляется в соответствующий GPO. Также потребуется установить разрешение таким образом, чтобы только нужные компьютерные группы имели разрешения Read и Apply Group Policy для созданного GPO. В следующий раз, когда компьютер из означенной группы будет запущен, выполнится сценарий и изменит пароль записи Administrator на данном компьютере. Когда вам понадобится установить другой новый пароль, измените аргумент password, который подставляется в сценарий. Если вы правильно назначите все права и удалите у группы Authenticated Users разрешения Read и Apply Group Policy, как описано во врезке "Добавление в GPO сценариев для автоматического запуска", администраторами GPO останутся только те пользователи, которые имеют доступ к паролям. Запишите и обеспечьте безопасность хранения старых паролей для нескольких циклов изменений для случая, если вам понадобится доступ к тем компьютерам, которые были вне сети на момент изменения пароля.

В. Могу я изменить пароль администратора на уникальный пароль?

О. Да, вам понадобится использовать автоматически запускаемый сценарий, связанный с базой данных или файлом, который представляет данные для паролей. Ниже показан пример такого файла с разделителями запятыми (CSV), содержащий имена систем и пароли. На каждой строке должны быть имена систем и пароль.

Pc111777,bambam1
Pc111778,barney12

Установите разрешения так, чтобы выделенная группа компьютеров могла читать эти файлы, а группа Authenticated Users - нет.

Следующий автоматически запускаемый сценарий обнаруживает и присваивает новые пароли отдельным компьютерам. Если файл не содержит списка компьютеров, для которых требуется изменить пароль, сценарий применяет пароли по умолчанию. По желанию можно записать результаты работы по смене паролей в файл журнала.

Set PW=defaultPW
for /f "tokens=1,2 delims=," %%i
in ('find /I "%computername%"
^< Pwlist.txt') do (Set PW=%%j)
Net User Administrator %PW%

В. Мне нужно изменить реестр на группе компьютеров в OU. Я хочу, чтобы изменения выполнялись один раз на каждой из систем. Мне также требуется возможность следить за тем, на каких системах эти изменения не происходили. Могу ли я использовать запускаемые автоматически сценарии для выполнения этой задачи?

О. Вы можете задействовать раздел реестра RunOnce для выполнения этой задачи только один раз. Однако этот способ не позволяет вам отследить изменения, вносимые по вашему требованию. Вместо этого создайте группу компьютеров и сделайте членами этой группы все компьютеры, на которых необходимо произвести изменения реестра. Дайте этой группе компьютеров разрешения Read, Write, Apply Group Policy и Add/Remove self as a member и уберите флажок Allow для группы Authenticated Users для разрешений Read и Apply Group Policy.

Создайте сценарий, выполняющий изменения реестра, и в конце добавьте следующие строки, удаляющие компьютер из группы компьютеров

cusrmgr -dlg Group_Name
-m DC_Name
-u Domain_Name\%COMPUTERNAME%$

Cusrmgr- утилита из состава Microsoft Windows 2000 Server Resource Kit. Разместите копию этой утилиты там, где расположены автоматически запускаемые сценарии. Когда компьютер перезагрузится, он запустит сценарий, вносящий изменения в реестр и удаляющий его из группы компьютеров. Чтобы увидеть, на каких компьютерах изменения реестра не выполнились, просто откройте группу. На компьютерах, оставшихся в этой группе, сценарий не отрабатывался и изменения не внесены. Вы можете также добавить программный код, добавляющий компьютер во вторую компьютерную группу, после удаления его из первой группы, после чего одна группа содержит все компьютеры, на которых изменения в реестре произведены. Другая группа содержит компьютеры, на которых изменения не производились.

В. У нас есть тестовая лаборатория из 10 компьютеров, которые используют пять разработчиков. Разработчикам необходимы административные права на любой системе, где они зарегистрировались. Операционные системы на этих компьютерах постоянно переустанавливаются. Как выполнить обязательные изменения реестра в таком случае?

О. Вы можете добавить пять учетных записей разработчиков в группу Administrators на этих компьютерах, однако членство в этой группе будет теряться каждый раз, когда переустанавливается операционная система компьютеров. Более удачным следует признать следующий метод: разместить компьютеры в OU и использовать автоматически запускаемый сценарий, который добавляет в группу Administrators при каждой перезагрузке индивидуальные пользовательские записи или их группу, которая содержит разработчиков. Используйте следующий код для добавления индивидуальных пользователей в группу Administrators:

Net Localgroup Administrators
"Domain_NameDeveloper1" /Add
Net Localgroup Administrators
"Domain_NameDeveloper2" /Add
Net Localgroup Administrators
"Domain_NameDeveloper3" /Add
Net Localgroup Administrators
"Domain_NameDeveloper4" /Add
Net Localgroup Administrators
"Domain_NameDeveloper5" /Add

Используйте также

Net Localgroup Administrators
"Domain_NameDevelopers_Group"
/Add

для добавления группы разработчиков в группу Administrators. Вы можете также задействовать GPO Restricted Groups для выполнения такой задачи.

В. В нашей организации около 50 пользователей добавлены в группу Administrators на некоторых компьютерах в комнате конференций. Как я могу удалить всех текущих пользователей из группы Administrators и предотвратить добавление неавторизованных пользователей в будущем?

О. Пользователям компьютеров в конференц-залах часто предоставляются права в группе локальных администраторов для того, чтобы они могли устанавливать и запускать демонстрируемые программные продукты. Эти пользователи, в свою очередь, могут предоставлять аналогичные права другим пользователям. В результате мы имеем компьютер, на котором множество пользователей имеют административные права. Такие компьютеры также бывают безнадежно перегружены демонстрируемыми программами. Вы можете использовать следующий автоматически запускаемый сценарий компьютеров для очистки группы Administrators и сохранения лишь нескольких авторизованных пользователей.

for /f "tokens=*" %%i in ('Net
Localgroup Administrators
^| find /I /V "Alias"
^| find /I /V "Members"
^| find /I /V "------"
^| find /I /V "successfully"
^| find /V "Administrator"')
Do Net Localgroup
Administrators "%%i" /Delete
Net Localgroup Administrators
"SpecialAdmins" /Add

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

В. Мне не удается запустить сценарий для автоматического запуска. С чем это может быть связано?

О. Запускаемые автоматически сценарии компьютера могут не выполняться, если компьютер не будет иметь доступа к соответствующим переменным окружения пользователя. Поскольку автоматически запускаемый сценарий запускается перед регистрацией, пользовательские переменные, такие как username, temp и logonserver недоступны. Убедитесь, что переменные, которые вы используете, являются локальными для сценария или представляют собой системные переменные. Также если у вас имеется несколько групповых политик GPO или сценариев, запускающихся для OU, убедитесь, что сценарии не конфликтуют друг с другом. Например, сценарий, который удаляет всех пользователей и группы из группы Power Users, не должен отменить действие сценария, добавляющего группу HelpDeskGroup в ту же самую группу Power Users.

Вы можете установить порядок отработки сценариев GPO. Можно также запускать сценарий в том порядке, который вы зададите. Следующие строки программного кода вы можете добавить в командный файл, применяющий GPO. Он вызывает и запускает четыре других сценария в заданном порядке.

Start /Wait script1.bat
Start /Wait script2.bat
Start /Wait script3.bat
Start /Wait script4.bat

При необходимости сохраните эти сценарии в том же месте, где расположены сценарии на сервере.

Если сценарии предназначены для различных GPO, у вас может возникнуть необходимость произвести тестирование, определяющее наиболее эффективный порядок запуска и при необходимости перенастроить этот порядок. Если в GPO имеется несколько сценариев, запускающихся на различных уровнях OU вашего домена, помните, что процесс обработки начинается с корня дерева и идет вверх.

Для запуска сценариев в режиме трассировки - так, чтобы вы могли отлаживать их, закомментируйте команду @ECHO OFF в начале сценария и установите соответствующие свойства GPO для его запуска. В конце сценария поместите команду pause так, чтобы вы могли видеть результаты в открытом окне, или воспользуйтесь командой sleep для задержки работы сценария на дополнительные 5 - 10 секунд, чтобы можно было просмотреть сообщения об ошибках. После окончания отладки сценария убедитесь, что убраны все команды pause и sleep.

В. Я создал GPO со автоматически запускаемым сценарием, а политика не применяется сразу. GPO отрабатывается правильно только на следующий день. Что происходит?

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

В. Каков наилучший путь проведения тестирования автоматически запускаемых сценариев?

О. Чтобы узнать, какие новые GPO и сценарии работают корректно, следует добавить тестовые компьютеры во вновь созданную подчиненную OU, созданную внутри промышленного OU. Не блокируйте наследование политик этой подчиненной OU, иначе не получите точной картины того, как взаимодействуют новые сценарии и политики с уже существующими политиками и сценариями. После того, как политики и сценарии корректно заработают на тестовом компьютере, добавьте в эту тестовую группу другие компьютеры. Делайте это до тех пор, пока не убедитесь, что все работает правильно. Аккуратно документируйте действия, которые выполняет каждый из GPO и связанные с ним сценарии.

После окончания тестирования переместите тестовые компьютеры в другую OU, а тестовую OU оставьте на месте, сохранив примененные политики и сценарии. Такая последовательность действий дает возможность сохранения последней удачной конфигурации "last known good" для GPO и сценариев для выполнения определенной задачи. Если вам понадобится выполнить подобную задачу в будущем, у вас уже будет готовая тестовая среда для проверки новой конфигурации.

Продолжайте работу

Я надеюсь, что подал читателям несколько полезных идей. Запускаемые автоматически сценарии компьютеров действительно представляют собой мощный инструмент для управления компьютерами, которые являются членами локальных групп. Они предоставляют администраторам развитые возможности в области управления системами с Windows XP и Windows 2000.


Добавление в GPO сценариев для автоматического запуска

Для того чтобы добавить сценарий в новый или уже существующий объект групповой политики Group Policy Object (GPO), откройте консоль Microsoft Management Console (MMC) и оснастку Active Directory Users and Computers, как показано на рисунке А. Правой кнопкой мыши щелкните на соответствующей организационной единице (OU), в которой хотите создать новую политику, или получить доступ к уже существующей. Из контекстного меню этой OU выберите Properties, затем выберите закладку Group Policy, как показано на Рисунке B. Нажмите New для добавления новой политики. Дайте новой политике имя и нажмите Edit.


Рисунок А

Рисунок В

Под новой политикой перейдите к Computer Configuration, Windows Settings, Scripts (Startup/Shutdown), как показано на рисунке С. Дважды нажмите Startup на правой панели, чтобы открыть страницу Startup Properties, показанную на Рисунке D, и нажмите Show Files.


Рисунок С

Рисунок D

Скопируйте в папку Startup файлы, содержащие сценарий, который хотите добавить, затем вернитесь на страницу свойств и нажмите Add. На рисунке Е показано добавление файла с именем PWScript.bat, который изменяет пароль учетной записи Administrator в момент перезагрузки пользователем компьютера.


Рисунок Е

NET USER Administrator %1

Закройте окно Startup. Вернитесь в окно Startup Properties и нажмите Add, чтобы открыть окно Add a Script, показанное на рисунке F.


Рисунок F

В этом окне введите имя сценария, который требуется запустить, и нажмите Browse для указания местоположения файла сценария, который вы предварительно скопировали в папку Startup. В поле Script Parameters наберите пароль, под которым будет выполняться сценарий. Сценарий будет подставлять этот пароль на компьютеры в соответствующую OU при следующей перезагрузке. Нажмите OK, чтобы выйти из всех окон. Заключительным шагом добавления автоматически запускаемого сценария в GPO необходимо сделать установку параметров безопасности GPO. В этом примере мне понадобилось установить параметры безопасности так, чтобы передаваемый пароль не был виден. Вернемся к странице свойств GPO, показанной на Рисунке B.

Правой кнопкой мыши нажмите на Group Policy, выберите Properties, затем выберите закладку Security, показанную на Рисунке G. По умолчанию группа Authenticated Users, содержащая пользователей и компьютеры домена, имеет разрешения Read и Apply Group Policy. Такая установка хорошо работает для большинства политик, однако в данном случае присвоение разрешений Read и Apply Group Policy группе Authenticated Users в данном примере приведет к тому, что пароль станет доступен любому пользователю домена, а не только группе, к которой применяется данная политика и пароль. Поэтому очистите пункт Allow для разрешений Read и Apply Group Policy для группы Authenticated Users. Затем предоставьте это разрешение группе компьютеров, содержащей учетные записи систем, на которых предполагается применить заданную GPO, как показано на рисунке Н. Нажмите Apply, а затем OK, чтобы закрыть окно Security.


Рисунок G

Рисунок H

Убедитесь, что вы тщательно протестировали запускаемые автоматически сценарии в тестовом OU перед применением в рабочем окружении. Тщательно протестируйте настройки безопасности, дабы убедиться в том, что политика будет применена к соответствующим компьютерам и пользователи не могли видеть важных данных с паролями.