Использование uninstallstring через PowerShell для удаления программы - PullRequest
0 голосов
/ 10 июля 2019

Проблема, с которой я столкнулся сейчас, заключается в том, что когда я запускаю код через PowerShell, он изменяет значение строки удаления и добавляет имя переменной перед ней.Результат, на который я надеюсь, таков:

MsiExec.exe /X{2C5B24AD-9F13-52A1-KA2N-8K4A41DC9L4G}

Но результат, который я получаю из переменной после замены /I на /X и выполнения .Trim(), следующий:

@{UninstallString=/X{2C5B24AD-9F13-52A1-KA2N-8K4A41DC9L4G}}

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

Я должен заменить /I на /Xпотому что строка удаления сначала возвращается как MsiExec.exe /I{2C5B24AD-9F13-52A1-KA2N-8K4A41DC9L4G}, и я пытаюсь удалить, а не установить.

if ($Uninstall_str) {
    #run uninstall here
    try {
        $Uninstall_str = $Uninstall_str -replace 'MsiExec.exe /I', '/X'
        $Uninstall_str = $Uninstall_str.Trim()
        Start-Process "msiexec.exe" -Arg "$Uninstall_str /qb" -Wait
    } catch {
        Write-Output $_.Exception.Message
        Write-Output $_.Exception.ItemName
        Write-Warning "Error unintalling."
    }
}

Ответы [ 2 ]

1 голос
/ 10 июля 2019

Вы не раскрыли значение UninstallString при чтении его из реестра.Ваш код для этого, вероятно, выглядит примерно так:

$Uninstall_str = Get-ItemProperty 'HKLM:\...\Uninstall\Something' |
                 Select-Object UninstallString

Замените его на

$Uninstall_str = Get-ItemProperty 'HKLM:\...\Uninstall\Something' |
                 Select-Object -Expand UninstallString

, и проблема исчезнет.

0 голосов
/ 10 июля 2019

Чтобы избавиться от @ {uninstallstring, все, что мне нужно было сделать, это указать, что я обрезал в этой строке

$Uninstall_str = $Uninstall_str.Trim()

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

$Uninstall_str = $Uninstall_str.Trim("@{UninstallString=")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...