пятница, 22 ноября 2013 г.

Удаление всех сетевых принтеров за исключением нескольких, и добавление новых принтеров в одном скрипте (remove network printers except several printers, add new printers by script)

Задача: Открывается новый офис и часть пользователей со своими ПК переезжают на новое место. Необходимо чтобы у пользователей удалились старые принтеры и подключились новые.
Решение: написать логон скрипт групповой политики на VBS.
В скрипте будут указаны переменные соответствующие 3 принтерам.
Сначала скрипт удаляет все сетевые принтеры за исключением указанных трех, т.к. необходимо удалить все старые принтеры, а исключение сделано чтобы при каждом последующем запуске скрипта он не удалял новые принтеры.
Далее скрипт добавляет 3 принтера указанные в тех же переменных.
Преимущество этой политики в том, что ее можно будет включить на неделю и после отработки на всех пользователях, ее можно отключить.

При изменении списка принтеров достаточно отредактировать переменные в скрипте, вынесенные отдельно в начале скрипта.

Скрипт:

' Script to add printers and to remove existing network printers except specified in script 

On Error resume Next ' otherwise users will get errors on subsequent reconnections

' Create the variable to hold printer connections

Dim NewPrinters , DelPrinters

' Create variables for each printer string
' You can create as many as you like here

Dim Printer_1, Printer_2, Printer_3
' Initialise our printers

Printer_1 = "\\msc-print01\SiegePRN031" 
Printer_2 = "\\msc-print01\SiegePRN032"
Printer_3 = "\\msc-print01\SiegePRN033"



Set DelPrinters = CreateObject("WScript.Network")

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer Where Network = TRUE")
     
For Each objPrinter in colPrinters
    If objPrinter.Name <> Printer_1 and objPrinter.Name <> Printer_2 and objPrinter.Name <> Printer_3 Then 
        strPrinter = objPrinter.Name
        DelPrinters.RemovePrinterConnection strPrinter
    End If
Next

' Initialise the printer connections object
Set NewPrinters = CreateObject("WScript.Network") 
' Connect each of our printers
NewPrinters.AddWindowsPrinterConnection Printer_1 
NewPrinters.AddWindowsPrinterConnection Printer_2
NewPrinters.AddWindowsPrinterConnection Printer_3
WScript.Quit

Комментариев нет:

Отправка комментария