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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   [решено] установка принтера через скрипт и GPO (http://forum.oszone.net/showthread.php?t=148379)

exo 19-08-2009 17:48 1197638

установка принтера через скрипт и GPO
 
Доброго вечера.
Есть 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 1198052

Цитата:

Цитата exo
есть ли код, проверяющий наличие данного принтера, и если его нет - ставить, а если есть - не устанавливать »

Код:

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 1198211

amel27, а можете расписать смысл каждой строчки?

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

amel27 20-08-2009 12:53 1198258

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

exo 20-08-2009 13:10 1198270

Цитата:

Цитата amel27
exo, каждой? »

а где можно хорошо почитать про скрипты для администрирования ? ну чтобы понятным языком? пора в них уже разбираться...

Цитата:

Цитата amel27
' Процедура подключения сетевого принтера »

Цитата:

Цитата amel27
' Функция проверки подключения сетевого принтера »

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

amel27 20-08-2009 15:27 1198416

Цитата:

Цитата exo
где можно хорошо почитать про скрипты для администрирования »

в этой ветке смотрели?.. http://forum.oszone.net/thread-130222.html

Цитата:

Цитата exo
почему проверка подключения идёт после самого подключения? »


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

exo 20-08-2009 17:14 1198550

Цитата:

Цитата amel27
If Not PrnIsConnected »

Цитата:

Цитата amel27
процедура PrnConnect() вызывается во второй строчке скрипта »

увидел :)
Цитата:

Цитата amel27
в этой ветке смотрели?.. »

нет. сча гляну.


Время: 15:01.

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