Удаление приложения с помощью uninstallString с использованием powershell в приложении WPF - PullRequest
3 голосов
/ 20 марта 2020

Я пытаюсь удалить программное обеспечение с помощью приведенного ниже сценария Powershell в приложении WPF

get-package |where name -like "Notepad++ (64-bit x64)" |% { & $_.Meta.Attributes["UninstallString"] /S}

указанная выше команда работает только для Notepad ++ (64-разрядная версия x64) , но при попытке выполнить попытку с программным обеспечением, таким как Git версия 2.25.1 и черепаха Git 2.10.0.0 (64 бита)

для Git версия 2.25. 1

get-package |where name -like "Git version 2.25.1" |% { & $_.Meta.Attributes["UninstallString"] /S} 

Я получаю следующую ошибку:

&: Термин "" C: \ Program Files \ Git \ unins001.exe "" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку. В строке: 1 символ: 59 + ... "Git версия 2.25.1" |% {& $ _. Meta.Attributes ["UninstallString"] / S} + ~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: ("C: \ Program Files \ Git \ unins001.exe": строка) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

Для черепахи Git 2.10.0.0 (64 бита)

 get-package |where name -like "TortoiseGit 2.10.0.0 (64 bit)" |% { & $_.Meta.Attributes["UninstallString"] /S} 

Я получаю ошибку ниже:

Выражение после '&' в элементе конвейера создало недопустимый объект. Это должно привести к имени команды, блоку скрипта или объекту CommandInfo. В строке: 1 символ: 70 + ... t 2.10.0.0 (64 бит) "|% {& $ _. Meta.Attributes [" UninstallString "] / S} + ~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: BadExpression

Я также пытался использовать сценарий PowerShell для объектов WMI. Ниже приведен сценарий

Get-WmiObject -Class Win32_Product | Where {$_.Name -like \"{returnStr}\"}  | foreach {$_.Uninstall()}".Replace("{returnStr}", Notepad++ (64-bit x64))   

Вышеуказанный сценарий работает только для программ, которые были установлены с помощью MSI

Если у кого-то есть предложения о том, как его выполнить был бы очень признателен!

1 Ответ

2 голосов
/ 20 марта 2020

Вы можете найти Uninstall-Package вашего друга здесь:

get-package | where-object name -like "Notepad++ (64-bit x64)" | ForEach {uninstall-package}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...