среда, 2 февраля 2011 г.

Установка принтера в домене с использованием групповой политики

Так или иначе все системные администраторы с автоматической установки принтеров на компьютеры пользователей. Тем же кто не успел столкнуться с такой задачей, уверен, данный пост тоже будет полезен.
Ниже я приведу способ, который позволит реализовать процесс автоматической установки принтеров.
Я предполагаю использовать скрипты входа в систему (Logon Scripts). К счастью, механизм групповой политики поддерживает задание этих параметров.
Создадим скрипт следующего вида (язык VB Script):
‘Файл AddDefaultPrinterConnection.vbs
'Подготавливаем данные

Set WSHNetwork = CreateObject("WScript.Network")

sPrintPath = \\ComputerName\PrinterName
sPrintShareName = "PrinterName"

'Создаем объект WMI сервиса на текущей машине
Set objWMIService = GetObject("winmgmts:" _
   & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")

‘Собираем информацию о подключенных к машине принтерах
Set colInstalledPrinters =  objWMIService.ExecQuery _
   ("Select * from Win32_Printer")
 
‘Проверим с помощью перебора подключен ли уже принтер
For Each objPrinter in colInstalledPrinters
If sPrintShareName = objPrinter.ShareName  Then
    WScript.Quit
 ‘Принтер подключен - завершим работу скрипта
 End if
Next

‘Выполняем подключение принтера
WSHNetwork.AddWindowsPrinterConnection sPrintPath
’Делаем его принтером по умолчанию
WSHNetwork.SetDefaultPrinter sPrintPath

Этот скрипт весьма не сложен, но я позволю себе дать несколько пояснений. Будьте внимательны – этот скрипт не меняет принтер по умолчанию, если принтер уже подключен к системе. Это сделано для того, чтобы в случае, если по каким-то причинам пользователю удобнее печатать по умолчанию на другой принтер, то скрипт не мешает ему делать это.
Теперь можно назначить этот скрипт, как Logon Script, в групповую политику и привязать его к нужному организационному юниту в Active Directory.
Однако, торопиться не стоит. Так как когда пользователи (с правами Пользователя) выполнят вход в систему и наша политика начнет выполняться, система попросит повышение прав для выполнения операции (иначе говоря, ввести пароль Администратора). Эту ситуацию также можно поправить, используя механизм групповых политик.
Желающие могут обратиться к первоисточнику на английском языке: http://technet.microsoft.com/en-us/library/cc753269.aspx
Нужная нам политика называется Point and Print Restrictions (Ограничения Указания и Печати).

  • В редакторе групповой политики, выбрать Computer Configuration (Конфигурация Компьютера) , выбрать Policies (Политики), выбрать Administrative Templates (Административные шаблоны), и, наконец, выбрать раздел Printers (Принтеры).

  • Щелкнуть правой клавишей на Point and Print Restrictions (Ограничения Указания и Печати), и выбрать пункт Edit (Редактировать).


  • Если вы доверяете любому источнику с принтерами нужно выбрать пункт Disable (Отключено). Если же необходимо разрешить своевольную установку принтеров только с определенных серверов, необходимо выбрать пункт Enable (Разрешено) и задать необходимые параметры ниже.
    Важно! желательно также произвести настройку аналогичного параметра, но находящегося, в разделе User Configuration (Конфигурация Пользователя). Этот параметр игнорируется Windows Server 2008 R2 и Windows 7, однако он имеет значение для Windows XP SP1 и Windows Server 2003 SP1.
    Вот теперь, когда мы учли необходимые настройки в групповой политике можно включать Logon Scripts.
    З.Ы. Поправки и дополнения с радостью принимаются в комменатриях.

    6 комментариев:

    Анонимный комментирует...

    Добрый день
    Полезная информация
    Скажите возможно ли сделать подключение принтеров по времени (с 8-00 до 20-00 принетра группы 1, в другое время принтера гр.2)

    Evgeny Vekovshinin комментирует...

    Думаю, удобнее всего будет реализовать это с помощью роли Принт-сервер на основе Windows Server 2008 R2

    Fanatik комментирует...

    Щелкнуть правой клавишей на Point and Print Restrictions (Ограничения Указания и Печати), и выбрать пункт Edit (Редактировать).

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


    P.S.Стоит win2003 r2 sp2 ru.

    Evgeny Vekovshinin комментирует...

    Делал и проверял на Windows Server 2008 R2.
    http://dl.dropbox.com/u/10930126/policy01.png - вот она подсвечена.

    Анонимный комментирует...

    Спасибо за полезный скрипт!
    Заюзал его для разворачивания самбовских принтеров :-)

    Анонимный комментирует...

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