首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过PowerShell使用uninstallstring卸载程序

通过PowerShell使用uninstallstring卸载程序
EN

Stack Overflow用户
提问于 2019-07-10 21:15:59
回答 2查看 179关注 0票数 0

我现在遇到的问题是,当我通过PowerShell运行代码时,它会更改卸载字符串的值,并在前面添加变量名。我希望的结果是这样的。

代码语言:javascript
复制
MsiExec.exe /X{2C5B24AD-9F13-52A1-KA2N-8K4A41DC9L4G}

但是,在用/X替换/I并执行.Trim()之后,我从变量中得到的结果如下:

代码语言:javascript
复制
@{UninstallString=/X{2C5B24AD-9F13-52A1-KA2N-8K4A41DC9L4G}}

所以我想知道你们能不能从我下面的代码中告诉我我哪里错了。

我必须用/X替换/I,因为卸载字符串首先像这样返回MsiExec.exe /I{2C5B24AD-9F13-52A1-KA2N-8K4A41DC9L4G},而我正在尝试卸载,而不是安装。

代码语言:javascript
复制
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."
    }
}
EN

回答 2

Stack Overflow用户

发布于 2019-07-10 21:28:21

从注册表读取UninstallString值时,您没有展开该值。执行此操作的代码可能如下所示:

代码语言:javascript
复制
$Uninstall_str = Get-ItemProperty 'HKLM:\...\Uninstall\Something' |
                 Select-Object UninstallString

将其替换为

代码语言:javascript
复制
$Uninstall_str = Get-ItemProperty 'HKLM:\...\Uninstall\Something' |
                 Select-Object -Expand UninstallString

这样问题就会消失。

票数 1
EN

Stack Overflow用户

发布于 2019-07-10 21:40:03

为了去掉@{uninstallstring,我需要做的就是指定我在该行上修剪的内容

代码语言:javascript
复制
$Uninstall_str = $Uninstall_str.Trim()

因此,这一行更改为以下代码,以接收我想要的结果。

代码语言:javascript
复制
$Uninstall_str = $Uninstall_str.Trim("@{UninstallString=")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56971577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档