【问题标题】:Powershell: Uninstalling Using UninstallStringPowershell:使用 UninstallString 卸载
【发布时间】:2014-03-27 18:09:07
【问题描述】:

在完成我正在处理的 Powershell 项目时,我有几个问题仍未得到解答。

我的目标是创建一个能够卸载 ClickOnce 部署的 C# 应用程序的 Powershell 脚本,此外还可能运行各种安装程序(但这部分我稍后会担心)。

我已经能够弄清楚如何为我的应用程序获取 UninstallString,我只是坚持我的选择。我尝试使用 Invoke-Expression 和其他一些方法运行它,但没有任何结果。由于我是 Powershell 的新手,所以我可能做错了什么,但我希望我还没有找到正确的方法。这是我当前用来获取 UninstallString 的相关代码的 sn-p:

$App = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" | 
    foreach { gp $_.PSPath } | 
    select DisplayName,DisplayVersion,InstallDate,Publisher,UninstallString | 
    where { $_.DisplayName -match "scan" }

如果有人对如何继续提出建议,将不胜感激!

【问题讨论】:

    标签: powershell deployment clickonce


    【解决方案1】:

    天哪,这让我想起了我多年前拼凑起来的 VBS 脚本,它会打开一个 HTML 界面,让您输入计算机名称,如果它在网络上,它会扫描远程注册表以查找内容在卸载键中,去掉 KB,并为您提供要卸载的内容的下拉列表。成百上千行的脚本,我再也不会使用了。总之,回忆够了。

    您应该能够使用调用运算符“&”来运行 UninstallString 属性中的字符串,如下所示:

    & $App.UninstallString
    

    现在,您已经说过您需要考虑一些事情。如果它是使用 MSIEXEC.EXE 执行的,那么他们很有可能将其设置为 MSIEXEC.EXE /I {<some GUID>},您可能希望将 /I 替换为 /X 并将 /NB-! 附加到字符串的末尾(如果我记得我的开关是正确的,它将显示最小的进度条并禁止可能弹出的任何“卸载完成”窗口)。

    【讨论】:

    • 是的,这最终奏效了。我遇到的唯一问题是,无论出于何种原因,我昨天用来查找字符串的方法不再有效。我希望一切都能很好地在一起......
    【解决方案2】:

    我略读了这个 - 太累了,无法阅读所有内容 :-),我只想添加一个链接,指向带有 PowerShell 卸载字符串的文章,希望它能够向您发送正确的方向:Uninstalling an MSI file from the command line without using msiexec

    【讨论】:

      【解决方案3】:

      这是一个我刚要解决的例子。 & 或调用运算符需要一个 cmd 字符串,然后是一个参数字符串数组。 Powershell 5.1 仅适用于程序或 msi 提供程序。

      $uninstall = -split (get-package 'Support Button *bomgar*' | 
        % { $_.metadata['uninstallstring'] })
      & $uninstall[0] $uninstall[1..($uninstall.length-2)]  # take off last arg --prompt
      

      或者如果你想等待,也是一样的想法:

      start -wait $uninstall[0] $uninstall[1..($uninstall.length-2)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-01
        • 2013-01-21
        • 2014-11-14
        • 2019-01-19
        • 2020-05-30
        • 2021-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多