Lote WMIC redireccionando salida y envolviendo en variable

Estoy intentando usar WMIC para eliminar algunas impresoras antiguas en nuestros servidores de impresión más antiguos

Si uso la siguiente sintaxis de la línea de comandos, funciona.

WMIC PRINTER WHERE "SERVERNAME LIKE '%% OLDSERVERNAME %%'" ELIMINAR

Se me pidió que viera si podía hacer que reemplazara las impresoras o actualizarlas para evitar que el servicio de asistencia reciba llamadas de "cómo agrego mi impresora"

Intenté alguna variación con SET para establecer las propiedades de SERVERNAME, parece que se procesa, pero nada cambia y al hacer un GET todavía se muestra el valor anterior.

así que pensé que podría hacer un bucle FOR / F, envolver el nombre de la impresora (nombre compartido) en una variable y luego usar otro comando para recrear las impresoras, después de que se hayan eliminado las impresoras infractoras.

aquí está mi guión

@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%

así que pensarías que obtendrías el valor envuelto en una buena variable para hacer lo que desees, pero no, encendí el eco y parece que la variable vuelve a establecerse en nulo en cuanto se captura.

Mi salida se ve así ...

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.

Me encantaría pensar en por qué parece estar tirando la cuerda.

Powershell y VBScript tampoco están fuera de la opción, estoy familiarizado con ambos, solo esto parecía posible, y realmente no quiero volver a empezar.

Respuestas a la pregunta(5)

Su respuesta a la pregunta