Пакетное перенаправление WMIC и перенос в переменную

Я пытаюсь использовать WMIC для удаления старых принтеров на наших старых серверах печати.

если я использую приведенный ниже синтаксис из командной строки, он работает

ПРИНТЕР WMIC ГДЕ УДАЛЕНО "SERVERNAME LIKE '%% OLDSERVERNAME %%'"

Меня попросили посмотреть, смогу ли я заменить принтеры или обновить их, чтобы избавить службу поддержки от звонков «как добавить принтер»

Я попробовал некоторые варианты с SET, чтобы установить свойства для SERVERNAME, похоже, он обрабатывается, но ничего не меняется, и выполнение GET все еще показывает старое значение.

поэтому я решил, что мог бы сделать цикл FOR / F, обернуть имя принтера (sharename) в переменную и затем использовать другую команду для воссоздания принтеров после того, как принтеры-нарушители были удалены.

вот мой сценарий

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

так что вы могли бы подумать, что вы получите все значение, упакованное в красивую переменную, с которой вы хотите, но нет, я включил эхо, и кажется, что переменная возвращается в ноль, как только она захвачена

мой вывод выглядит так ...

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.

хотелось бы несколько мыслей о том, почему он, кажется, сбрасывает строку.

Powershell и VBScript также не исключены, я знаком с обоими, просто это казалось возможным, и я действительно не хочу начинать все сначала.

Ответы на вопрос(5)

Ваш ответ на вопрос