удалить используя реестр удалить строку powershell - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь создать скрипт powershell, который удалит все версии программы в нашей студии.

Я посмотрел реестр и увидел, что у нас установлено 3 строки программы. наши студийные компьютеры

{D4BE10F2-3E2D-4120-863A-765623D53264}
{77067FD9-800C-48B4-803D-569642ADABC5}
{1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42}

Я создал тестовый сценарий:

msiexec.exe /x{D4BE10F2-3E2D-4120-863A-765623D53264} /q

и использовал его на компьютере, это сработало, и эта версия программы была удалена.

Я хочу создать сценарий, который будет циклически повторять все 3 строки и «Успех» на правильной, поскольку я не знаю, какая машина имеет какую версию без сканирования.

, поэтому я создал `сценарий powershell:

foreach ($guid in '{D4BE10F2-3E2D-4120-863A-765623D53264}', 
                  '{77067FD9-800C-48B4-803D-569642ADABC5}', 
                  '{1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42}') {

  $exe = 'C:\Windows\System32\msiexec.exe'

  $ps = Start-Process -PassThru -Wait $exe "/x /q" 

  if ($ps.ExitCode -eq 0) { "Success"; exit 0 }

}

Write-Warning "Uninstallation failed."
exit $ps.ExitCode

Это не работает для меня, так как продолжает возвращаться с ошибкой удаления, я не уверен, что происходит.

Любой совет?

1 Ответ

0 голосов
/ 01 апреля 2020

Это будет работать, даже если установлены все три версии:

foreach ($guid in '{D4BE10F2-3E2D-4120-863A-765623D53264}', 
                  '{77067FD9-800C-48B4-803D-569642ADABC5}', 
                  '{1DB1AEB7-EDBD-4BB1-87DB-26C72576DA42}') {

    $exe = 'C:\Windows\System32\msiexec.exe'
    $ps = Start-Process $exe -ArgumentList "/x$guid /q" -PassThru -Wait 
    if ($ps.ExitCode -eq 0) {
        Write-Host "$($guid): Success"
    } else {
        Write-Host "$($guid): Failed"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...