Использование сценариев входа в чистую и смешанную среду Active Directory
Сценарии входа в систему могут быть полезными инструментами для настройки среды рабочего стола для пользователей. Некоторые из вещей, для которых можно использовать такие сценарии, включают сопоставление сетевых дисков, подключение к общим принтерам, сбор системной информации, синхронизацию системных часов и так далее. На самом деле почти все, что вы можете сделать из командной строки, можно сделать с помощью сценария входа в систему.
Сценарии входа в систему существуют уже некоторое время, и большинство администраторов сетей на основе Windows имели возможность их использовать. В доменных сетях Windows NT все было просто: если пользователю нужно было настроить свою среду с помощью сценария входа в систему, администратор должен был сначала написать сценарий входа, используя язык пакетного программирования, который существует со времен MS-DOS.. После написания этот сценарий был сохранен с использованием расширения.bat, чтобы сделать его исполняемым, но чтобы заставить его работать для конкретного пользователя, сценарий необходимо было найти в общем ресурсе NETLOGON контроллера домена, на котором была аутентифицирована учетная запись пользователя. В Windows NT этот общий ресурс NETLOGON соответствовал папке %systemroot%system32 eplimportscripts, и при размещении сценария в этой папке на PDC он автоматически реплицировался на все BDC в домене. Как только это было сделано, администратору нужно было только добавить имя сценария в поле Имя сценария входа в диалоговом окне Профиль среды пользователя с помощью Диспетчера пользователей для доменов.
Затем появилась Windows 2000 с поддержкой назначения сценариев входа с использованием групповой политики и встроенной поддержкой Windows Script Host (WSH) в качестве альтернативы традиционным пакетным сценариям. Хотя WSH позволяет создавать гораздо более мощные сценарии входа в систему, а групповая политика упрощает управление сценариями входа, проблема возникает, когда в вашей сетевой среде есть несколько рабочих столов, включающих устаревшие платформы, такие как Windows 95/98 и Windows NT 4.0 Workstation. В оставшейся части этой статьи приведены некоторые рекомендации по управлению сценариями входа как в смешанной (Windows 2000/XP/2003 и устаревшие Windows 95/98/NT) среде, так и в чистой среде Windows 2000 (или более поздней версии).
Использование сценариев входа в смешанную среду
Под «смешанной средой» я подразумеваю сочетание клиентов Windows, поддерживающих групповую политику (Windows 2000/XP/2003), и клиентов, не поддерживающих (Windows 95/98/NT). Управление сценариями входа в систему в средах, включающих рабочие столы Linux/UNIX или Mac, выходит за рамки этого обсуждения. Для простоты мы сосредоточимся здесь на средах Active Directory, в которых есть контроллеры домена, работающие под управлением Windows 2000 Server и/или Windows Server 2003, а также сочетание текущих и устаревших рабочих столов Windows.
Предположим, вы хотите использовать сценарий входа в смешанной среде для настройки среды рабочего стола пользователей путем сопоставления буквы диска с общим сетевым ресурсом. Простой сценарий входа в систему с пакетным файлом, который делает это, может быть таким:
@эхо выключено
чистое использование x: \filesrvudgets
Чтобы использовать этот сценарий, введите его в Блокнот и сохраните как logon.bat или что-то подобное. Затем поместите сценарий в общий ресурс NETLOGON на контроллере домена, который, если ваши контроллеры домена работают под управлением Windows 2000/2003, можно найти в %systemroot%sysvolsysvol<domain_DNS_name>scripts, как показано на рисунке 1:
Рисунок 1: Расположение общего ресурса NETLOGON на контроллерах домена Windows 2000/2003
После размещения этого сценария в общем ресурсе NETLOGON он автоматически реплицируется на все контроллеры домена в домене mynewforest.com.
Следующим шагом является назначение сценария входа учетным записям пользователей, которым необходимо, чтобы сценарий выполнялся на их настольных компьютерах. Чтобы запустить сценарий, например, на компьютере Боба Смита, используйте Active Directory Users and Computers, чтобы открыть лист свойств для объекта User, представляющего Bob Smith, и выберите вкладку Profiles. Затем просто введите имя сценария в поле Logon Script, как показано на рис. 2 ниже. Обратите внимание, что если вы храните свой сценарий входа в общий ресурс, отличный от NETLOGON, вам следует ввести полный путь UNC вместо сценария в поле «Сценарий входа» ниже, но убедитесь, что сценарий реплицируется на все ваши контроллеры домена.
Рисунок 2: Назначение сценария входа пользователю Bob Smith
Если вы хотите использовать возможности Windows Script Host в смешанной среде, вы можете сделать это двумя способами:
- Загрузите и установите соответствующий клиент служб каталогов (DSClient) для Windows 95/98 или Windows NT. DSClient позволяет этим устаревшим платформам Windows участвовать в среде Active Directory и включает поддержку WSH и VBScript. Чтобы получить DSClient для соответствующей платформы, см. статью 288358 базы знаний Майкрософт.
- Загрузите и установите Windows Script Host для Windows 95/98/NT. Это позволяет вам запускать сценарии VBScript на этих платформах, но не дает вам функциональности ADSI, поэтому это ограничивает полезность WSH для целей сценариев. Вы можете получить WSH для Windows 95/98/NT в Центре загрузки Microsoft.
В любом случае, когда ваши устаревшие настольные компьютеры Windows поддерживают WSH, вы можете писать сценарии входа в систему на более мощном языке VBScript вместо ограниченного языка пакетного программирования. К сожалению, в смешанной среде вы не можете напрямую назначить сценарий.vbs учетной записи пользователя на вкладке «Профиль», как показано на рис. 2 выше, поскольку это не будет работать на устаревших клиентах Windows. Чтобы решить эту проблему, выполните следующие действия.
- Напишите сценарий входа в систему с помощью VBScript и сохраните его с расширением.vbs, например logon.vbs.
- Сохраните файл logon.vbs в общей папке NETLOGON на контроллере домена.
- Используйте язык пакетного программирования для написания традиционного сценария входа в систему, который вызывает ваш сценарий logon.vbs и сохраняет его с расширением.bat, например logon.bat.
- Сохраните файл logon.bat также в общей папке NETLOGON на контроллере домена.
- Назначьте logon.bat на вкладке «Профиль» каждой учетной записи пользователя, как описано выше на рис. 2.
Простой сценарий logon.bat, вызывающий сценарий logon.vbs, будет выглядеть следующим образом:
@эхо выключено
wscript %0..logon.vbs
И простой сценарий logon.vbs, который сопоставляет диск x: с общим ресурсом \filesrvudgets, будет выглядеть так:
Dim wshСеть
Установите wshNetwork = CreateObject("Wscript.Network")
wshNetwork.MapNetworkDrive «x:», «\filesrvudgets»
WSCript.Quit
Теперь, когда Боб входит в систему на своей машине, logon.bat запускается и вызывает logon.vbs, который сопоставляет диск x: с общим ресурсом Budgets по желанию. И это будет работать как на ваших устаревших рабочих столах Windows 95/98/NT, так и на новых рабочих столах Windows 2000/XP.
Использование сценариев входа в систему Windows 2000 или более поздней версии
Если все ваши настольные компьютеры работают под управлением Windows 2000 или более поздней версии, то первое, что вы должны сделать, это забыть о вкладке «Профиль» в том, что касается сценариев входа в систему. На самом деле, забудьте о вкладке «Профиль», так как поля на этой вкладке предоставляются только для сред нижнего уровня (Windows NT или более ранних версий). Вместо этого используйте групповую политику для назначения сценариев входа в систему, что является гораздо более мощным и гибким подходом, чем то, что предлагает вкладка «Профиль». Кроме того, забудьте о пакетном языке программирования и используйте VBScript для написания сценариев входа в систему, поскольку это позволяет создавать гораздо более мощные сценарии, чем пакетные сценарии. Если вы еще не изучили VBScript, см. раздел «Ресурсы» в конце этой статьи, где приведены некоторые учебные пособия.
Давайте воспользуемся приведенным выше сценарием logon.vbs, который сопоставляет диск и назначит его всем сотрудникам нашей компании в Виннипеге. Прелесть Active Directory заключается в том, что вы можете создавать организационные единицы (OU) для разных мест или отделов в вашей компании, а затем создавать объекты групповой политики (GPO) и связывать их с каждой OU. На рисунке 3 вы можете видеть, что у нас есть три OU в нашем домене mynewforest.com: Торонто, Ванкувер и Виннипег:
Рис. 3. Пользователям в подразделении Winnipeg требуется сценарий входа, назначенный для сопоставления сетевого диска
Чтобы назначить logon.vbs пользователям в Виннипеге, щелкните правой кнопкой мыши подразделение Winnipeg и выберите «Свойства». Затем выберите вкладку «Групповая политика», где вы можете увидеть, что мы уже создали новый объект групповой политики с именем WinnipegGPO и связали его с этим подразделением (рис. 4):
Рисунок 4: WinnipegGPO связан с Winnipeg OU
Нажмите «Изменить», чтобы открыть WinnipegGPO, и перейдите в раздел «Конфигурация пользователяНастройки WindowsСценарии», как показано на рис. 5 ниже:
Рисунок 5: Параметры политики для назначения сценариев входа и выхода
Теперь щелкните правой кнопкой мыши Logon на правой панели и выберите Properties (рисунок 6):
Рисунок 6: Назначение нового сценария входа с помощью WinnipegGPO
Нажмите кнопку «Показать файлы», чтобы открыть папку по умолчанию, в которой хранятся сценарии входа, назначенные с помощью групповой политики, на контроллере домена (рис. 7):
Рисунок 7. Папка по умолчанию, в которой сценарии входа, назначенные с помощью групповой политики, хранятся на контроллере домена.
Обратите внимание на этот рисунок, что сценарии входа в систему, назначенные с помощью групповой политики, хранятся во вложенной папке общего ресурса SYSVOL на ваших контроллерах домена. Эта вложенная папка SYSVOL называется sysvol<domain_DNS_name><policy_GUID>userscriptslogon, и содержимое этой папки (находящейся в SYSVOL) автоматически реплицируется на все контроллеры домена в домене.
Теперь с помощью проводника Windows найдите сценарий logon.vbs, который мы создали ранее, и нажмите CTRL+C, чтобы скопировать его в буфер обмена. Затем вернитесь в папку, показанную на рис. 7 выше, и нажмите CTRL+V, чтобы скопировать файл logon.vbs в нужную папку. Закройте окно папки и вернитесь к экрану «Свойства входа», показанному ранее на рис. 6, и нажмите кнопку «Добавить», чтобы открыть диалоговое окно «Редактировать сценарий», и в поле «Имя сценария» введите logon.vbs — имя сценария, который вы хотите назначить (рис. 8):
Рисунок 8: Назначение сценария входа
Нажмите OK дважды, и сценарий будет назначен. Теперь после обновления групповой политики на машине Боба при следующем входе в систему он увидит диск X: при открытии «Мой компьютер» или проводника Windows.
Ресурсы
Если вы хотите узнать, как начать писать сценарии WSH с помощью VBScript, или найти несколько полезных сценариев, уже разработанных другими, вот несколько ресурсов, которые стоит проверить:
- Скрипты в MSDN
- Центр сценариев на TechNet
- Учебник по VBScript
- Грунтовка WSH
- Руководство пользователя VBScript
- Справочник по языку VBScript