Batch-WMIC, der die Ausgabe umleitet und in eine Variable umschließt
Ich versuche, mit WMIC einige alte Drucker auf unseren älteren Druckservern zu entfernen
Wenn ich die folgende Syntax von der Befehlszeile verwende, funktioniert es
WMIC PRINTER WHERE "SERVERNAME LIKE '%% OLDSERVERNAME %%'" DELETE
Ich wurde gefragt, ob ich die Drucker ersetzen oder aktualisieren kann, damit der Helpdesk keine Anrufe zum Hinzufügen von Druckern erhält
Ich habe einige Variationen mit SET versucht, um die Eigenschaften für SERVERNAME festzulegen. Es scheint sich zu verarbeiten, aber nichts ändert sich, und GET zeigt immer noch den alten Wert.
Daher dachte ich, ich könnte eine FOR / F-Schleife durchführen, den Namen des Druckers (Freigabename) in eine Variable einschließen und dann mit einem anderen Befehl die Drucker neu erstellen, nachdem die fehlerhaften Drucker gelöscht wurden.
Hier ist mein Drehbuch
@ECHO
ECHO Gathering Installed Printer Information...
FOR /F "tokens=1 skip=1" %%A IN ('WMIC PRINTER WHERE "Servername like "%%printaz1%%"" get sharename') DO SET PRINTERNAME=%%A
ECHO %PRINTERNAME%
Sie würden also denken, Sie würden den gesamten Wert in eine nette Variable einschließen, aber nein, ich habe das Echo aktiviert und es sieht so aus, als würde die Variable auf Null zurückgesetzt, sobald sie erfasst wird
meine Ausgabe sieht so aus ...
FOR /F "tokens=1 skip=1" %%A IN ('WMIC PRINTER WHERE "Servername like "%%printaz1%%"" get sharename') DO SET PRINTERNAME=%%A
SET PRINTERNAME=nameofprinter
SET PRINTERNAME=
ECHO
ECHO is on.
Ich würde gerne ein paar Gedanken darüber haben, warum es so aussieht, als würde es die Saite wegwerfen.
Powershell und VBScript sind auch nicht ausgeschlossen, ich kenne beide, nur das schien möglich und ich möchte wirklich nicht von vorne anfangen.