Проблема, с которой я столкнулся сейчас, заключается в том, что когда я запускаю код через 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."
}
}