Пакетное перенаправление 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 также не исключены, я знаком с обоими, просто это казалось возможным, и я действительно не хочу начинать все сначала.