Encontrei um problema no qual minha experiência (e o Google-fu) me decepcionaram.
Basicamente, preciso enviar KB968730 para algumas centenas de clientes. Naturalmente, gostaria de verificar a instalação do hotfix antes de iniciar a instalação. Infelizmente, preciso fazer isso com um script e um GPO, em vez de um sistema adequado como o SCCM. Normalmente não é algo que me daria problemas, mas, parece haver um problema.
O truque é que o caminho para a chave de registro que esse hotfix instala tem um espaço sangrento. Especificamente, ele é instalado em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730
.
Não é surpresa, então, que o comando padrão do arquivo batch / CMD reg.exe query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730
lance um erro de sintaxe e atrapalhe a parte de verificação de instalação do meu arquivo batch - ele está vendo a segunda parte do caminho como um segundo argumento. Então, claro, tentei encapsular o caminho entre aspas duplas, sem alegria. Citações simples, sem alegria. Ameaçar meu sistema operacional e / ou a Microsoft também não produziu resultados.
Depois de alguns googling e palavrões, descobri o que parece ser uma solução para isso, mas não consigo fazê-lo funcionar, por alguma razão eu não consigo descobrir. (Indubitavelmente, porque minhas habilidades de codificação são fracas hoje em dia e a tokenização de strings me deu um loop no melhor dos momentos.)
Parece que o que eu quero usar é algo como:
for /f "Tokens=2,*" %%a in (‘reg.exe "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\KB968730" /v Path’) do (set xpath=%%a)
e, em seguida, trabalhe com %xpath%
, mas isso não está funcionando. Ter tokens definidos como 1 me dá um caminho antes do espaço, o set para 2 me fornece o caminho após o espaço e não consigo descobrir como acrescentar um valor ao outro. Particularmente frustrante desde todas as respostas que eu vi disse "obrigado, funcionou !!!" ou similar. * (Com a ressalva de que você remove um %
ao executar diretamente na linha de comando).
Alguém sabe o que estou bagunçando aqui?
Como alternativa, se alguém ainda usa o VBS e sabe como fazê-lo com isso, eu ficaria feliz em aceitar essa opção. (No PowerShell, no entanto, por conta do nosso cliente XP não ter instalado).
PS, se isso for mais adequado para o StackOverflow, não tenho problemas com a migração, mas meu pensamento inicial foi que "nós" não gostamos que desenvolvedores entrem aqui e nos perguntem questões triviais sobre configuração suas máquinas dev, então eu pensei que eles provavelmente sentiam o mesmo sobre a minha pergunta.