Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Пользователям не мапится принтер Samsung ML-3470 (http://forum.oszone.net/showthread.php?t=215074)

dimonprodigy 07-09-2011 22:29 1748377

Пользователям не мапится принтер Samsung ML-3470
 
Доброго времени суток.

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

Задача следующая: есть скрипт, который подключает народу принтеры в зависимости от значения поля "Location" (оное поле можно найти в свойствах компьютера). Скрипт имеет следующий вид (это тестовый, рабочий отличается количеством отделов)

Код:

Option Explicit
Dim WSHNetwork, Computer, Path, strComputerDN, objSysInfo, objComputer, sPrintPath, PrintLocation
Dim objWMIService, colInstalledPrinters, objPrinter
Set WSHNetwork = CreateObject("WScript.Network")
On Error Resume Next
Path = WSHNetwork.ComputerName
Set objSysInfo = CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.ComputerName
Set objComputer = GetObject("LDAP://" & strComputerDN)

'Назначаем необходимый для установки сетевой принтер
'в зависимости от значения поля Location

PrintLocation = "All"

PrintLocation = objComputer.Get("Location")

Select Case PrintLocation
  Case "Отдел 1"
        WSHNetwork.AddWindowsPrinterConnection "\\printserver\printer1"
        WSHNetwork.AddWindowsPrinterConnection "\\printserver\printer2"
        sPrintPath = "\\printserver\printer3"
        WScript.Quit
End Select

WSHNetwork.AddWindowsPrinterConnection sPrintPath
WSHNetwork.SetDefaultPrinter sPrintPath

'Выполняем проверку установленных принтеров
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
  ("Select * from Win32_Printer")
 
For Each objPrinter in colInstalledPrinters
 If  PrintLocation = objPrinter.Location  Then
    WScript.Quit
 End If
Next

Что мы видим? Если в комментарии компьютера указано "Отдел 1", то пользователям, работающим за этим ПК, назначается три принтера - printer1, printer2 и printer3; printer3 назначается дефолтным. Обычный скрипт, короче, содранный моими предшественниками на просторах Сети :)
Скрипт этот через групповую политику распространяется на нужные объекты.

Фишка в следующем: никак не хочет назначаться принтер по-умолчанию (это Samsung ML-3470). Я уже и переименовывал его, и другой порт подсовывал, и драйвера обновлял - не хочет стервец ни в какую. Причем если открыть "пуск -> выполнить -> \\printserver\printer3" прекрасно подключается и работает...


Время: 15:57.

Время: 15:57.
© OSzone.net 2001-