Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
119<br />
thode „CancelAllJobs“ zum Einsatz, so löscht<br />
Windows alle Druckaufträge für alle Drucker<br />
auf dem Printserver.<br />
WMI im Zusammenspiel mit VB-Script<br />
Auch mit Hilfe <strong>von</strong> VB-Scripts kann WMI zum<br />
Einsatz kommen. In der ersten Zeile diese<br />
Skripts steht hier ein Punkt, der das lokale<br />
System repräsentiert. Gibt der Benutzer hingegen<br />
der Variable „strComputer“ anstelle<br />
des Punktes eine IP-Adresse oder den Namen<br />
eines entfernten Systems mit, so werden die<br />
Drucker auf diesem Rechner mitsamt der Bezeichnung<br />
der Freigabe angezeigt. Das Skript<br />
kann, nachdem es mit der Dateinamenerweiterung<br />
VBS gespeichert wurde, entweder per<br />
Doppelklick oder über die Eingabeaufforderung<br />
mit CSCRIPT {DATEINAME.VBS} gestartet<br />
werden.<br />
strComputer = „.“<br />
Set objWMIService = GetObject _<br />
(„winmgmts:\\“ & strComputer & „\<br />
root\cimv2“)<br />
Set colPrinters = objWMIService.Exec<br />
Query _<br />
(„Select * From Win32_Printer“)<br />
For Each objPrinter in colPrinters<br />
Wscript.Echo objPrinter.Name & „ -<br />
„ & objPrinter.ShareName<br />
Next<br />
Ausgabe aller fehlerhaften Drucker<br />
Ab einer gewissen Anzahl <strong>von</strong> Druckern verliert<br />
jeder Administrator den Überblick. Folgendes<br />
Skript zeigt alle Drucker an, bei denen<br />
der Status auf „Error“ gesetzt wurde – also die<br />
Geräte, die nicht einsatzbereit sind:<br />
strComputer = „.“<br />
Set objWMIService = GetObject _<br />
(„winmgmts:\\“ & strComputer & „\<br />
root\cimv2“)<br />
Set colPrinters = objWMIService.<br />
ExecQuery _<br />
(„Select * From Win32_Printer<br />
where Status= ‚Error‘“)<br />
For Each objPrinter in colPrinters<br />
Wscript.Echo objPrinter.ShareName<br />
Next<br />
Mit Argumenten an das Skript<br />
Auch VBS-Dateien möchte der Administrator<br />
auf die gleiche Weise wie Batch-Dateien, also<br />
mit Argumenten, nutzen können. So ließe sich<br />
beispielsweise der Rechnername per Argument<br />
an das Skript übergeben. Leider reagiert<br />
VB-Script nicht gut auf fehlende Argumente,<br />
darum muss zunächst die Existenz eines Arguments<br />
geprüft werden.<br />
Das folgende Skript gibt alle Drucker auf<br />
einem Printserver aus, bei denen die Priorität<br />
im Vergleich zum Standardwert „1“ erhöht<br />
wurde. Der Aufruf geschieht über Leerzeichen Rechnernamen.<br />
Set objArgs = Wscript.Arguments<br />
if objArgs.Count > 0 then<br />
strComputer = cstr(objArgs(0))<br />
Set objWMIService = GetObject _<br />
(„winmgmts:\\“ & strComputer & „\<br />
root\cimv2“)<br />
Set colPrinters = objWMIService.<br />
ExecQuery _<br />
(„Select * From Win32_Printer<br />
where priority > 1“)<br />
wscript.Echo „Erhöhte Priorität<br />
entdeckt:“<br />
For Each objPrinter in colPrinters<br />
Wscript.Echo objPrinter.ShareName<br />
& „ Priorität : „ & objPrinter.Priority<br />
Next<br />
else<br />
Wscript.Echo „Kein Zielcomputer<br />
spezifiziert (IP/NetBIOS-Name) !“<br />
end if<br />
Mit einem Drucker verbinden<br />
WMI eignet sich auch ausgezeichnet dafür,<br />
um auf einem Printserver (strComputer) eine<br />
Druckerfreigabe einzurichten:<br />
strComputer = „.“<br />
Set objWMIService = GetObject( _<br />
„winmgmts:{impersonationLevel=<br />
Impersonate}!\\“ & _<br />
strComputer & „\root\cimv2“)<br />
Set objPrinter = objWMIService.<br />
Get(„Win32_Printer“)<br />
errReturn = objPrinter<br />
.AddPrinterConnection _<br />
(„\\{PRINTSERVER}\{FREIGABE}“)<br />
Rundll32 printui.<br />
dll,PrintUIEntry: Dies<br />
ist die einfachste und<br />
effektivste Methode,<br />
um das Druck-Subsystem<br />
<strong>von</strong> Windows<br />
direkt anzusteuern.<br />
Druckerinstallation mit WMI<br />
Die Einrichtung eines neuen Druckers übernimmt<br />
ein Visual-Basic-Script mit der Methode<br />
„SpawnInstance_“. Dabei sollten Sie<br />
unbedingt darauf achten, dass der unter „DriverName“<br />
benannte Druckertreiber auf dem<br />
System auch bereits vorhanden ist. Nur so<br />
funktioniert dieses Skript!<br />
strComputer = „.“<br />
set objWMI = GetObject(„winmgmts:\\“ &<br />
strComputer)<br />
set objPrinter = objWMI.Get(„Win32_<br />
Printer“).SpawnInstance_<br />
with objPrinter<br />
.DriverName = „HP LaserJet 2200 Series<br />
<strong>PC</strong>L 5“<br />
.PortName = „LPT1:“<br />
.DeviceID = „Testdrucker“<br />
.Network = True<br />
.Shared = True<br />
.ShareName = „Test“<br />
.Comment = „Kommentar“<br />
.Put_<br />
end with<br />
WScript.Echo „Drucker installiert.“<br />
Drucker wieder löschen<br />
Muss der Systembetreuer dann einen Drucker<br />
wieder löschen, so kann er dies am einfachsten<br />
wieder über WMIC mit Hilfe der Methode<br />
„Delete“ erledigen:<br />
wmic printer {DRUCKERNAME} delete<br />
Fazit<br />
Dieser Beitrag soll Ihnen zeigen, wie robust<br />
und leistungsfähig das Drucksystem <strong>von</strong> Windows<br />
ist. Mit den hier vorgestellten Tipps,<br />
sowie einigen nützlichen Zusatzprogrammen<br />
wie Screwdrivers, ThinPrint oder der universellen<br />
Anmelde-Unterstützung Script Logic,<br />
können sich Systembetreuer und engagierte<br />
„Power-User“ schnell und einfach weitere Automatismen<br />
für die Druckerzuordnung oder<br />
das Drucken aufbauen – und so ihre Arbeit<br />
deutlich erleichtern.<br />
Drucken im Netz - <strong>XXL</strong><br />
Eine ausführlichere Version dieses Beitrags<br />
finden Sie auf der Heft-DVD.<br />
gp<br />
www.pc-magazin.de <strong>PC</strong> <strong>Magazin</strong> 1/2012