Установка имени и GUID в качестве переменной WMI C Product Get - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь создать базовый c скрипт для удаления приложения на всех наших конечных точках с помощью cmd;

msiexe c / quiet / norestart / uninstall {xxxx-xxx-xxx-xxxx-xxxxx}

Из-за разных версий одно и то же приложение может иметь несколько GUID на разных конечных точках

Как я могу запустить командлет wmic product get name,IdentifyingNumber для поиска определенного c приложения и установить его GUID также в переменную?

wmic product get name,IdentifyingNumber"
IdentifyingNumber                       Name
{E8CAD3B5-7016-45AE-97DF-098B5C8D4AC8}   App1
{90160000-008C-0000-1000-0000000FF1CE}   App

Я могу найти и сопоставить приложение с переменной , бит не может установить GUID для переменной.

FOR /F "tokens=2 delims==" %%A IN ('WMIC product GET Name /VALUE ^| FIND /I "App1"') DO SET _application=%%A
ECHO Application: "%_application%"
Rem ECHO GUID:%_GUIDVALUE% //Matching Application GUID

Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

wmic имеет несколько уродливых привычек, из-за которых его вывод трудно анализировать *), но это не невозможно:

@echo off 
setlocal

for /f %%a in ('wmic product where "name='Update for Windows 10 for x64-based Systems (KB4023057)'" get name^,IdentifyingNumber^|find "{"') do set "GUID=%%a"

echo %GUID%

*) особенно
1. уродливое окончание строки CRCRLF, что здесь не применяется, потому что мы не используем строку «в конце строки».
2. Некоторые «пустые» строки (не совсем пустые - они содержат оставшиеся CR), которую мы преодолеваем с помощью find "{" (мы знаем, что char будет в нужной строке).

0 голосов
/ 17 июня 2020

A FOR / F l oop может получить идентификатор GUID. Измените значение APPNAME на то, что вы ищете. Как вы планируете действовать в случае, если на компьютере установлено несколько версий приложения?

@ECHO OFF
SET "APPNAME=Windows SDK"
FOR /F "delims=" %%A IN ('powershell -NoLogo -NoProfile -Command ^
    "Get-CimInstance -Class Win32_Product |" ^
    "Where-Object { $_.Name -eq '%APPNAME%' } |" ^
    "ForEach-Object { $_.IdentifyingNumber }"') DO (SET "APPID=%%A")
ECHO APPID is %APPID%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...