27.02.2014 Aufrufe

PC Magazin Classic XXL Geheime Tools von Microsoft (Vorschau)

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!