kurt.maurer
Goto Top

Welcher (lokale) Drucker verwendet welchen Treiber (inkl. Version und SupportedPlatform)

Hallo Leute,

ich bin gerade dabei , für eine Server 2008 R2-Domänenumbegung ein Skript zum Löschen nicht mehr benötigter Druckertreiber (als Startup-Skript, clientseitig) zu entwerfen.

Nehmen wir nun an, ich möchte einen Treiber löschen, der bisher von einem verknüpften Drucker genutzt wurde (nun aber nicht mehr benötigt wird, z.B. weil ein neuer Treiber auf dem Druckserver bereitgestellt wird).
Dieser Treiber soll aber nur gelöscht werden, falls kein lokal installierter Drucker diesen Treiber noch benutzt.
Folglich muss erst festgestellt werden, welche Drucker welchen Treiber benutzen.

Ich kann nun zwar die Drucker und deren Treiber auflisten, allerdings fehlen dann die Infos zu
Version und SupportedPlatform (brauche ich aber, denn theoretisch kann auf einem System der 32- und 64-bit Treiber installiert sein):

Die Eigenschaft "Version" gibt die Versionsnummer des Betriebssystems an, für den dieser Treiber bestimmt ist.
  • 0 Win9x
  • 1 Win351
  • 2 NT40
  • 3 Win2k

Die Eigenschaft "SupportedPlatform" gibt die Betriebssysteme an, für die dieser Treiber bestimmt ist.
Beispiele: Windows NT x86 oder Windows IA64 oder Windows x64


' List Printer Connections  

strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer")  

For Each objPrinter in colInstalledPrinters
    Wscript.Echo "Name: " & objPrinter.Name  
    Wscript.Echo "Treiber-Name: " & objPrinter.DriverName   
Next

Ebenso kann ich alle Treiber auflisten lassen, mit den Infos zu Version und SupportedPlatform, dann fehlen aber wieder die Infos, welche Drucker diese Treiber nutzen. Mir ist klar, dass ich in einem Startup-Skript nicht feststellen kann, welche verknüpften Drucker welchen Treiber benutzen, bei den lokalen Druckern ist dies jedoch möglich.

' List Printer Drivers  

strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_PrinterDriver")  

For each objPrinterDriver in colInstalledPrinters
    Wscript.Echo "Name: " & objPrinterDriver.Name  
    Wscript.Echo "Supported Platform: " & objPrinterDriver.SupportedPlatform  
    Wscript.Echo "Version: " & objPrinterDriver.Version  
Next


Wie kann ich nun also, zumindest für lokale Drucker, eine Liste erstellen die ungefähr so aussieht?:

Druckername;Treiber
HP Laserjet 4200;HP LaserJet 4200 PCL 5e,3,Windows NT x86
An OneNote 2010 senden;Send To Microsoft OneNote 2010 Driver,3,Windows NT x86


Danke für eure Hilfe!

Content-ID: 187404

Url: https://administrator.de/contentid/187404

Ausgedruckt am: 23.11.2024 um 02:11 Uhr

Kurt.Maurer
Kurt.Maurer 03.07.2012 um 21:57:09 Uhr
Goto Top