Netzwerkdrucker de-/installieren

Alle Fragen und Antworten rund um ACMP Version 3.x
Antworten
Paolo88
Beiträge: 25
Registriert: Do Feb 01, 2007 1:29 pm

Hallo,

wir wollen einen Printserver austauschen und müssen aus diesem Grund bei allen Clients die Drucker des alten Printservers deinstallieren und die des neuen installieren.
Es gibt doch die Möglichkeit, mit ACMP Drucker sowohl zu deinstallieren als auch zu installieren. Ist dies nur mit lokalen Druckern möglich oder auch mit Netzwerkdruckern? Ich habe jetzt schon verschiedenes ausprobiert, bekomme aber immer diese Nachricht im Ablauflog: "Error opening Printer for deletion"

Ist es auf irgendeinem Weg möglich, über ACMP Client Commands alle installierten Netzwerk-Drucker zu deinstallieren und statt dessen die Drucker des neuen Printserver zu installieren (Drucker haben gleiche IP-Adresse und gleichen Namen)?

Vielen Dank schon Mal für eure Hilfe.
Mit freundlichen Grüßen
Roger Paul
ADO
Beiträge: 4
Registriert: Do Nov 01, 2007 12:52 am

Alle Drucker mit deren Druckertreiber und deren Ports zu löschen ist relativ simpel.

Man holt sich die Ini-Dateien ("Get client Values"),
durchläuft die Sektionen der Printer.ini ("Iterate inifile sections"),
liest die Werte für "Name", "Port", "Driver" und "Type" aus ("Set variable from inifile"),
löscht zuerst den Drucker und danach wahlweise den Port und den Treiber.

Mit der Variable "Type" kann man unterscheiden, ob es ein Netzwerkdrucker ist.

Bei dem Treiberlöschen muß man aufpassen, den der Treiber könnte noch für andere Drucker gebraucht werden, weswegen man an der Stelle Fehler ignorieren sollte.

Der Haken dabei ist, das man nur die Drucker, Druckerports und Treiber löschen kann, die gerade verwendet werden, den in der Printer.ini stehen nur installierte Drucker und keine "nicht verwendete Treiber" bzw. Ports. Da müsste man das ganze eher über WMI machen, z.B.:

Code: Alles auswählen

Set objDictionary = CreateObject("Scripting.Dictionary")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer")
For Each objPrinter in colPrinters 
    objDictionary.Add objPrinter.PortName, objPrinter.PortName
Next
Set colPorts = objWMIService.ExecQuery _
    ("Select * from Win32_TCPIPPrinterPort")
For Each objPort in colPorts
    If objDictionary.Exists(objPort.Name) Then
    Else
        ObjPort.Delete_
    End If
Next
Desweiteren löscht man nur die Drucker seit dem letzten Scan, hat sich also in der Zwischenzeit etwas geändert, ist das noch nciht in der ACMP-Datenbank und somit ist der Drucker auch noch nicht in den Ini-Dateien die man durchgeht.
kratz
Beiträge: 33
Registriert: Di Sep 02, 2008 8:40 am

Der Beitrag hier ist zwar relativ alt, aber für mich umso aktueller...

Ich scheitere momentan daran per Client Command einen Netzwerkdrucker zu verbinden.

Unsere Drucker laufen an einem Printserver und sind an diesem freigegeben, der bisherige zugriff läuft schlicht über den Freigabenamen (\\printserver\Drucker1).

Wie bilde ich das als Client Command ab (mal abgesehen von integrierten VBS oder Batchscripten)?

Hintergrund: Unsere Drucker werden momentan nach AD-Gruppenzugehörigkeit von einem VBS skript zugewiesen. Da es hiermit leider einige Timingprobleme gibt wollte ich das ganze als Client-Command bei der Anmeldung laufen lassen.
Zuerst werden alle vorhandenen Drucker und Netzlaufwerke gelöscht und anschliessend neu verbunden.

Oder können Sie mir eine bessere Vorgehensweise empfehlen? Ich befinde ich momentan noch in der Evaluierungsphase und habe glaube ich noch nicht alle Möglichkeiten verstanden ;-)

Danke vorab.

gruß
M. kratz
Antworten