Drucker mit WMI ansprechen Druckserver in Windows Server 2016
Wenn Sie die Daten von Servern auslesen wollen, zum Beispiel Informationen zu Druckern, können Sie auch auf WMI-Befehle setzen.
Anbieter zum Thema

Ausführliche Informationen zu Festplatten lassen sich zum Beispiel ebenfalls mit WMI-Befehlen abrufen. Dazu gibt es das CMDlet Get-WmiObject. Verwenden Sie die Option Win32_LogicalDisk lassen sich Informationen zu Festplatten anzeigen. Ähnlich funktionieren die Abfragen auch für Drucker. Dazu verwenden Sie Get-WmiObject mit folgenden Erweiterungen:
Win32_Printer - Druckerwarteschlangen
Win32_PrintJob - Druckjobs
Win32_PrinterDriver - Alle Treiber, die installiert sind
Win32_TCPIPPrinterPort - IP-Ports
Win32_PrinterConfiguration - Druckerkonfiguration
Win32_PrinterSetting - Druckerinformationen zu allen Druckern
Win32_PrinterShare - Freigaben der Drucker
Win32_PrinterDriverDll - Installiere DLLs
Wie mit vielen Befehlen über WMI, können Sie auch Informationen von Rechnern im Netzwerk auslesen. Die installierten Drucker auf einem Druckserver können Sie zum Beispiel in einer Variable speichern und diese dann weiterverwenden, ausdrucken, oder auslesen:
$Printer = Get-WmiObject -Class Win32_Printer -ComputerName [Druckserver]
Sie können aber auch noch weitergehen und die Anzeige filtern lassen. Dazu verwenden Sie die Option Filter des CMDlets get-WmiObject. Auf diesem Weg lassen Sie sich nur die Druckwarteschlangen von bestimmten Druckern auf speziell festgelegten Servern anzeigen. Auch diese Informationen können Sie in einer Variablen speichern, wie zuvor gezeigt. Sie können die Ausgabe aber auch direkt in der PowerShell anzeigen:
Get-WmiObject -Class Win32_Printer -ComputerName [Druckserver] -Filter 'name = "[Druckername]"'
Sie können sich auch den Status zu allen oder einzelnen Druckern anzeigen lassen. Sie erhalten den Status als Zahl:
(Get-WmiObject Win32_Printer -Filter "Name='<Druckername>'").PrinterStatus
Folgende Druckerstatus sind möglich:
1 = Andere
2 = Unbekannt
3 = Bereit
4 = Druckt
5 = Wärmt auf
6 = Druckauftrag beendet
7 = Offline
Sie können die Ausgabe auch skripten um das Ergebnis schöner anzuzeigen, wenn Sie zum Beispiel alle Drucker eines Servers anzeigen wollen:
$printstatus = (Get-WmiObject Win32_Printer -Filter "Name='<Drucker>'").PrinterStatus
if ($printstatus = 1) {"Druckerstatus: Unbekannt"}
if ($printstatus = 2) {"Druckerstatus: Unbekannt"}
if ($printstatus = 3) {"Druckerstatus: Bereit"}
if ($printstatus = 4) {"Druckerstatus: Druckt"}
if ($printstatus = 5) {"Druckerstatus: Wärmt auf"}
if ($printstatus = 6) {"Druckerstatus: Druckauftrag beendet"}
if ($printstatus = 7) {"Druckerstatus: Offline"}
Viele Drucker liefern auf diesem Weg auch erweiterte Informationen, wenn zum Beispiel Fehler vorliegen. Auch hier erhalten Sie den Status wieder als Zahlencode:
Get-WmiObject Win32_Printer -Filter "Name='<Drucker>'").DetectedErrorState
0 = Unbekannt
1 = Anderer
2 = Kein Fehler, Drucker nicht verfügbar
3 = Wenig Papier
4 = Kein Papier
5 = Wenig Toner
6 = Kein Toner
7 = Klappe geöffnet
8 = Papierstau
9 = Offline
10 = Service
11 = Ausgabeschacht voll
Auch hier können Sie wieder ein Skript erstellen und die Anzeige formatieren. Neben der Möglichkeit Drucker auszulesen, können Sie aber auch Änderungen durchführen. Sie können zum Beispiel den Namen eines Druckers in einer Variablen speichern und den Drucker in der PowerShell über WMI umbenennen:
$Printer = Get-WmiObject -class win32_Printer -ComputerName [Druckserver] -Filter 'name = "[Druckername]"'
$Printer.name = "<Neuer Name>"
$Printer.put()