PowerShell - Löschen Sie die Druckwarteschlange aus dem print-server
Ich habe einen Drucker server, die Gastgeber der rund 1000 Drucker. Ich möchte löschen eine dieser.
Ich bin derzeit mit diesem Befehl:
$p = Get-WmiObject -Class Win32_printer -ComputerName $server -namespace "root\CIMV2" -filter "name='printer0456'"
Funktioniert es, er findet den Drucker, und dann kann ich mit diesem Befehl löschen Sie es:
$p.delete()
Aber was für freaks die Hölle aus mir, ist, dass es dauert, wie 2-3 Minuten für den ersten Befehl zu finden den Drucker. Für mich macht es Sinn.
Gibt es etwas, was ich falsch mache, oder kann ich was anderes verwenden, einen Drucker zu löschen schneller ?
EDIT: check meine Antwort
Diese Weise, ist es nur Holen, bis es gründet den richtigen Drucker, statt der Analyse der gesamten Drucker-Liste.
- Bei der Verwendung der
Get-WmiObject
Befehl aus der Ferne, kann es eine Weile dauern, bis es zu einer Rückkehr. Es wird die ganze Liste und Filter, bevor es gibt nichts, so kann es eine Weile dauern, insbesondere da Sie über 1000 Drucker für Sie zu filtern, durch. Wenn Sie wollen, um die Dinge zu beschleunigen, können Sie versuchen, verwenden Sie die PowerShell-remoting und rufen den Befehl, als sei es lokal. Ich habe nicht verwendet diese Funktion, um viel, also kann ich nicht sagen, ob er beschleunigt ist oder nicht, aber einen Versuch ist es Wert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie ein WMI-accelerator zu beschleunigen, eine Menge Ihrer Abfrage in WMI.
DeviceID ist ein indizierter Wert, der in der WMI-Datenbank und von default-DeviceID sollte der gleiche wie der name des Druckers.
Ihre WMI-Abfrage, die Kosten, so speichern die Ergebnisse. Ziehen Sie alle Druckereien in einer Auflistung. Filtern Sie die Sammlung und löschen Sie die Drucker, die Sie wünschen.
Können Sie
-like
und-match
filtern Drucker mit ähnlich genug Namen. Wie so,TEMPORÄRE LÖSUNG, DIE ICH GEFUNDEN HABE,
$p = gwmi win32_printer | ? {$_.name -match "PrintServer"} | % ($i in $p) {$i.delete()}
Diese nur entfernen, Druckern, dass der folgende Druck-server-Namen in Ihrem Namen Weg.
gwmi win32_printer | ? {$_.name -match "PrintServer"} | % ($i in $_) {$i.delete()}
?