Batch WMIC redirecionando a saída e agrupando na variável
Estou tentando usar o WMIC para remover algumas impressoras antigas em nossos servidores de impressão mais antigos
se eu usar a sintaxe abaixo da linha de comando funciona
IMPRESSORA WMIC ONDE "SERVERNAME LIKE '%% OLDSERVERNAME %%'" DELETE
Pediram-me para ver se eu poderia substituir as impressoras ou atualizá-las para evitar que o helpdesk recebesse chamadas "como faço para adicionar minha impressora"?
Eu tentei alguma variação com SET para definir as propriedades para SERVERNAME, parece processar, mas nada muda e fazendo um GET mostra o valor antigo ainda.
então imaginei que poderia fazer um loop FOR / F, envolver o nome da impressora (nome de compartilhamento) em uma variável e, em seguida, usar outro comando para recriar as impressoras, depois que as impressoras incorretas tiverem sido excluídas.
aqui está meu roteiro
@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%
então você pensaria que teria o valor todo envolvido em uma variável legal para fazer como quiser, mas não, eu fiz o eco e parece que a variável é definida de volta para null assim que é capturada
minha saída parece com isso ...
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.
adoraria algumas reflexões sobre por que parece estar jogando a corda.
O Powershell e o VBScript também não estão fora da opção, estou familiarizado com ambos, apenas isso pareceu possível, e eu realmente não quero começar de novo.