Сделан небольшой скрипт для автоматического подключения сетевых принтеров пользователям.
Принтер подключается пользователю в зависимости от прописанного в свойствах компьютера Размещения (Location).
Код
'Подключение принтеров пользователям исходя из прописанного размещения комьютера
'Определяем значание поля Location (Размещение)
Option Explicit
Dim WSHNetwork, Computer, Path, strComputerDN, objSysInfo, objComputer, sPrintPath
Set WSHNetwork = CreateObject("WScript.Network")
On Error Resume Next
Path = WSHNetwork.ComputerName
Set objSysInfo = CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.ComputerName
Set objComputer = GetObject("LDAP://" & strComputerDN)
'Назначаем необходимый для установки сетевой принтер
Select Case objComputer.Get("Location")
Case "Отдел IT"
sPrintPath = "\\server1\HPLaserJ"
Case "Туристический отдел"
sPrintPath = "\\server1\HP1100"
Case "Отдел 1"
sPrintPath = "\\server2\HPLaserJ"
Case "Касса"
sPrintPath = "\\ANNA\CanonLBP"
Case "Отдел 2"
sPrintPath = "\\server3\HP1200viz"
Case Else
MsgBox("Для установки принтера обратитесь в отдел тех. поддержки или к системному администратору.") :WScript.Quit
End Select
'Подключаем принтер и делаем его принтером по умолчанию
WSHNetwork.AddWindowsPrinterConnection sPrintPath
WSHNetwork.SetDefaultPrinter sPrintP[s]ath
[/code]
Необходимо добавить проверку если принетр уже подключен не производить его повторное подключение, так как у некоторых пользователей для печати спец. бланков изменены настройки принтера, а при переподключении они могут сбрасываться.
Правильно заданный вопрос - это уже половина ответа.
Необходимо добавить проверку если принетр уже подключен не производить его повторное подключение, так как у некоторых пользователей для печати спец. бланков изменены настройки принтера, а при переподключении они могут сбрасываться.
[/quote]
Проверку можно сделать по значению Location (Размещение), предварительно задав его в свойствах принтера. У меня это получилось так:
Код
'Подключение принтеров пользователям исходя из прописанного размещения комьютера
'Определяем значание поля Location (Размещение)
Option Explicit
Dim WSHNetwork, Computer, Path, strComputerDN, objSysInfo, objComputer, sPrintPath, NetwPrinters, PrintLocation, 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)
'Назначаем необходимый для установки сетевой принтер
Select Case objComputer.Get("Location")
Case "Отдел IT"
sPrintPath = "\\server1\HPLaserJ"
PrintLocation = "HPLaserJ_server1"
Case "Туристический отдел"
sPrintPath = "\\server1\HP1100"
PrintLocation = "HP1100_server1"
Case "Отдел 1"
sPrintPath = "\\server2\HPLaserJ"
PrintLocation = "HPLaserJ_server2"
Case "Касса"
sPrintPath = "\\ANNA\CanonLBP"
PrintLocation = "CanonLBP_ANNA"
Case "Отдел 2"
sPrintPath = "\\server3\HP1200viz"
PrintLocation = "HP1200viz_server3"
Case Else
MsgBox("Для установки принтера обратитесь в отдел тех. поддержки или к системному администратору.") :WScript.Quit
End Select
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
If PrintLocation = objPrinter.Location Then
WScript.Quit
End if
Next
'Подключаем принтер и делаем его принтером по умолчанию
WSHNetwork.AddWindowsPrinterConnection sPrintPath
WSHNetwork.SetDefaultPrinter sPrintPath
[/code]
На моей тестовой системе (WinXP) все прошло на ура. А вот на тачках с Win2k вылезает такая ошибка:
Windows Script Host ругается на строчку: Select Case objComputer.Get("Location")
Error: Свойства службы каталогов Active Directory не могут быть найдены в кэше
SoccerMan если не прописан должен был выдать сообшени о том что админ сам все должен сделать по поводу принтера. (там в теле скрипта смотри)
Это на всех w2k происходит ?
Правильно заданный вопрос - это уже половина ответа.