PDA

Показать полную графическую версию : [решено] установка принтера через скрипт и GPO


exo
19-08-2009, 17:48
Доброго вечера.
Есть Windows Server 2003 SE SP2.
Есть принтер установленный на нём локально серез TCP/IP порт.
Есть скрипт VBS, устанавливающий данный принтер автоматически:
Set WshNetwork = CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection "\\server\HP LaserJet 4300 PCL 6"
WshNetwork.SetDefaultPrinter "\\server\HP LaserJet 4300 PCL 6"
Result = MsgBox("Установка принтеров завершена. Для продолжения нажмите ОК")
Засунул его в GPO - работает.
Но вот беда - работает при каждом входе в систему.
Есть ли возможность сделать GPO разовой для каждого пользователя ?
Или есть ли код, проверяющий наличие данного принтера, и если его нет - ставить, а если есть - не устанавливать?

или вот сейчас думаю убрать код Result = MsgBox("Установка принтеров завершена. Для продолжения нажмите ОК")

Спасибо.

amel27
20-08-2009, 08:06
есть ли код, проверяющий наличие данного принтера, и если его нет - ставить, а если есть - не устанавливать »
Set objNet = CreateObject("WScript.Network")

PrnConnect "\\server\HP LaserJet 4300 PCL 6"

' Процедура подключения сетевого принтера
Sub PrnConnect(strPrinterPath)
If Not PrnIsConnected(strPrinterPath) Then
objNet.AddWindowsPrinterConnection strPrinterPath
objNet.SetDefaultPrinter strPrinterPath
End If
End Sub

' Функция проверки подключения сетевого принтера
Function PrnIsConnected(strPrinterPath)
Dim colPrn, intPrn
Set colPrn = objNet.EnumPrinterConnections

PrnIsConnected = vbFalse
If colPrn.Count > 0 Then
For intPrn = 1 To colPrn.Count-1 Step 2
If StrComp (strPrinterPath, colPrn.Item(intPrn), 1)=0 Then
PrnIsConnected = vbTrue
Exit For
End If
Next
End If
End Function

exo
20-08-2009, 11:57
amel27, а можете расписать смысл каждой строчки?

AddWindowsPrinterConnection и SetDefaultPrinter мне понятны, а вот остальные нет...

amel27
20-08-2009, 12:53
exo, каждой? :o
пока только в общих чертах: "objNet.EnumPrinterConnections" возвращает массив подключенных принтеров - по 2 элемента на принтер (порт, имя), проверяем количество элементов (colPrn.Count) и потом циклом (For/Next) проходим по нечетным элементам массива (имя) и сравниваем с заданным, если не находим совпадения, то ф-ция PrnIsConnected() возвращает FALSE, иначе - TRUE.

exo
20-08-2009, 13:10
exo, каждой? »
а где можно хорошо почитать про скрипты для администрирования ? ну чтобы понятным языком? пора в них уже разбираться...

' Процедура подключения сетевого принтера »
' Функция проверки подключения сетевого принтера »
а почему проверка подключения идёт после самого подключения?

amel27
20-08-2009, 15:27
где можно хорошо почитать про скрипты для администрирования »в этой ветке смотрели?.. http://forum.oszone.net/thread-130222.html

почему проверка подключения идёт после самого подключения? »
- Function/End Function/Sub/End Sub только определяет функцию (последовательность команд);
- вызов PrnIsConnected() осуществляется из PrnConnect() - проверка и при успехе подключение;
- процедура PrnConnect() вызывается во второй строчке скрипта.

exo
20-08-2009, 17:14
If Not PrnIsConnected »
процедура PrnConnect() вызывается во второй строчке скрипта »
увидел :)
в этой ветке смотрели?.. »
нет. сча гляну.




© OSzone.net 2001-2012