Windows 2000/XP/2003 Active Directory Logon script
версия 13.40

Назначение: формирование окружения пользователя – подключение сетевых каталогов и принтеров на основании данных Active Directory.

Дополнительные возможности: удаление локальных портов сетевых устройств печати.

Использование

Скрипт проектировался для применения в групповых политиках Active Directory на системах Windows 2000/XP/2003.

Точка применения – корневой контейнер организационной структуры. Скрипт должен исполняться в контексте пользователя.

Запускаемый файл: logon.wsf

Параметры запуска:
/f – переподключение сетевых дисков
/p – переподключение сетевых принтеров
/d – удаление локальных TCP/IP-принтеров и IP-портов
/c OUname – область действия: скрипт будет выполняться на компьютерах, расположенных только в указанном контейнере и ниже по дереву Active Directory

Дополнительные параметры, указываемые в теле скрипта:

·        Список подсетей, в которых выполняется скрипт: массив ArrSubnets;

·        Список имен принтеров и портов, не подлежащих удалению: массив arrPrintPortNameExclud;

·        Список букв дисков, не подлежащих отключению: массив arrNoDisconLit – перечисляются сетевые диски или не требующие переподключения или подключаемые другим методом.

Условия работы

Общие условия

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

Скрипт выполняется только на компьютерах с адресами IP, входящими в диапазоны указанных в массиве ArrSubnets подстей.

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

Подключение сетевых каталогов сетевыми дисками

Для подключения сетевых каталогов скрипт использует информацию, полученную из свойств объектов «общая папка», размещенных в Active Directory:

·        сведения о размещении общей папки в структуре AD;

·        UNC-адрес сетевого ресурса;

·        обозначение диска (Z:), на который должен быть подключен сетевой ресурс, указанное в поле «описание» (description).

При подключении сетевого файлового ресурса производится поиск в Active Directory объекта «пользователь», соответствующего регистрирующемуся пользователю, выясняется его расположение в структуре AD (соответствующее организационной структуре), производится поиск объектов «общая папка» в ветке AD, от контейнера пользователя до корня AD.

В процессе поиска учитываются только общие папки, имеющие в поле «описание» (description) обозначение диска.

Если ни одного объекта «общая папка» не найдено, скрипт завершает процедуру переподключения сетевых каталогов.

Если найден один или более объектов «общая папка», все существующие в системе сетевые диски отключаются (за исключением дисков, перечисленных в массиве arrNoDisconLit) и начинается процесс подключения сетевых файловых ресурсов. Если в результате поиска по структуре AD будет обнаружено несколько общих папок, требующих подключения на одну букву диска, например, Z:, то на эту букву будет подключен ресурс, на который указывает «общая папка», расположенная ближе по структуре AD к объекту «пользователь». Например, если для пользователя «panov@domain», размещенного в контейнере «<domain>/ЦО/Юридический отдел», найдены каталоги
"\\Srv02\Dep\Test" "Z:" - объект "<domain>/ЦО/\\Srv02\Dep\Test" (контейнер «<domain>/ЦО»)
и
"\\Srv02\Dep\Law" "Z:" - объект "<domain>/ЦО/Юридический отдел/\\Srv02\Dep\Law" (контейнер «<domain>/ЦО/Юридический отдел»)
то на диск Z: подключен будет \\Srv02\Dep\Law.

Если в одном контейнере окажется несколько «общих папок», требующих подключения на одну букву диска, на эту буквы будет подключен любой из ресурсов, остальные будут проигнорированы. При следующем выполнении операции (регистрация пользователя в системе) подключенным может оказаться другой ресурс. Поэтому необходимо не допускать размещения в одном контейнере нескольких объектов «общая папка», указывающих на одну букву диска.

Дополнительная возможность управления подключениями – изменение стандартных прав доступа к объекту «общая папка». По умолчанию группа Authenticated Users имеет право чтения всех свойств объекта. Если это право предоставить только определенной группе безопасности домена, например, «<domain>\TopManagers», исключив группу Authenticated Users из списков ACL объекта «общая папка», то прочесть свойства «общей папки», и, следовательно, подключить сетевой ресурс смогут только члены указанной группы («<domain>\TopManagers»). Указанный прием влияет только на процесс автоматического подключения сетевых каталогов в процессе регистрации пользователя в системе. На параметры безопасности каталога права доступа к объекту «общая папка» не оказывает никакого влияния.

Подключение сетевых принтеров

В структуре AD объект «принтер» (printQueue) по умолчанию является дочерним по отношению к серверу печати[1]. Для того, чтобы скрипт в процессе выполнения смог произвести подключение сетевого принтера к компьютеру пользователя, необходимо выполнение ряда условий:

·        размещение в структуре Active Directory объектов «компьютер» и «принтер» определенным образом, приближенным к физическому размещению и группирующим компьютеры и принтеры;

·        наличие заполненного определенным образом комментария объекта AD «принтер».

При подключении сетевого принтера производится поиск в Active Directory объекта «компьютер», на котором регистрируется пользователь, выясняется его расположение в структуре AD, производится поиск объектов «принтер» (printQueue) в ветке AD, от контейнера компьютера до корня AD.

В процессе поиска сетевых принтеров производится анализ поля description объекта «принтер», а точнее цифры в первой позиции, обозначающей «вес[2]» принтера, например, «2; HP LaserJet 6P». От остальных комментариев цифра должна отделяться знаком ";".

Сетевой принтер не учитывается при поиске и соответственно, не подключается, если:

·        поле описания не заполнено

·        до первого знака «;» в описании присутствуют нецифровые символы

·        в качестве «веса» указан 0

Если ни одного принтера не найдено, скрипт завершает процесс переподключения принтеров.

Если найден один принтер или более, производится отключение имеющихся сетевых принтеров и начинается процесс подключения найденных принтеров. В списке найденных принтеров сравниваются данные поля «Описание» (description) и принтер с наибольшим «весом» назначается принтером «по умолчанию», (есть возможность перенаправить на него же указатель LPT1, но эта функция сейчас отключена за невостребованностью). В случае, если найдено несколько объектов «принтер» с одинаковым «весом», принтером «по умолчанию» назначается ближайший по размещению в AD принтер. Если найдено несколько объектов «принтер» с одинаковым максимальным «весом», размещенных в одном контейнере, принтером «по умолчанию» может оказаться подключен любой из них.

Изменение статуса «по умолчанию» для принтеров, назначенных на компьютер, производится в случае, если принтер, который был назначен «по умолчанию» ранее, более не подключается, а также в случае первичного подключения сетевых устройств к компьютеру. В остальных случаях принтером «по умолчанию» оставляется принтер, назначенный пользователем ранее.

Дополнительная возможность управления подключениями – применение параметров безопасности к объекту «принтер» в Active Directory. По умолчанию группа Authenticated Users имеет право чтения на объект «принтер». Для того, чтобы в процессе регистрации пользователя в системе подключить принтер вне зависимости от его физического размещения, достаточно вместо группы Authenticated Users указать группу, членам которой должен быть подключен упомянутый принтер. Остальным пользователям принтер в процессе регистрации в системе подключен не будет, однако сделать это «вручную» возможность остается.

Важно: изменение каких-либо полей/параметров принтера необходимо производить на сервере печати, свойства принтера публикуются в AD, но не наоборот!

Дополнительная информация

Active Directory периодически производит проверку доступности очередей печати. По умолчанию, если очередь печати недоступна в течение 24 часов, она удаляется с сервера печати (параметры GPO Computer/Configuration/Administrative Templates/Printers период опроса 8 часов и 2 повтора = 24 часа).

Если сервер печати будет недоступен для контроллеров AD в течение указанного времени, очереди печати, размещенные на нем, будут удалены из AD. При последующем появлении сервера печати произойдет повторная публикация очередей печати в AD, но информация об их размещении будет утеряна – все очереди печати это но сервера печати будут размещены как дочерние по отношению к серверу печати. Чтобы этого не произошло, необходимо:

·        изменить значения параметров GPO Computer/Configuration/Administrative Templates/Printers;

·        периодически сохранять информацию об очередях печати с помощью скрипта printq.vbs, что позволит с его же помощью восстановить размещение указателей на очереди печати в структуре AD.

Удаление IP-портов на клиентских компьютерах

Функция удаления IP-портов создавалась для «наведения порядка» в организации системы печати организации. С помощью этой функции с клиентских компьютеров удаляются локально установленные сетевые принтеры, а также порты IP для этих принтеров.

Скачать скрипт logonscript.zip (6601 байт).



[1] Для того, чтобы в оснастке ADUC отобразить объекты printQueue необходимо включить отображение пользователей и компьютеров как контейнеров

[2] Из списка найденных принтеров принтером «по умолчанию» будет назначен принтер с наибольшим «весом».


© Ю. В. Лиманский,
Решение распространяется свободно.
Хостер не несет никакой ответственности за последствия,
прямо или косвенно возникшие в результате использования предлагаемого решения.

   Rambler's Top100