【问题标题】:"Get-Package *notepad* | Uninstall-Package -Force" not working“Get-Package *notepad* | Uninstall-Package -Force”不起作用
【发布时间】:2019-07-11 09:59:38
【问题描述】:

我以管理员身份打开PowerShell

我跑:

Get-Package *notepad*

PowerShell 向我展示了 Notepad++(32 位 x86)

然后我运行:

Get-Package *notepad* | Uninstall-Package -Force

而且 PowerShell 没有卸载 Notepad++

我尝试了一些程序,它们仍然全部安装。为什么?

编辑: 如您所见,@m0lochwalker PowerShell 的行为就像程序已卸载。

在您的环境中试一试,没有任何卸载。

@Ranadip Dutta:Get-WmiObject -class Win32_Product 仅适用于 32 位,如果是 64 位,则不会返回 Notepad++;基本上它根本不返回任何 64 位:

我需要更全面的东西,可以同时使用 32 位和 64 位

【问题讨论】:

  • 使用类似 $program = Get-WmiObject -class Win32_Product | ? {$_.Name -eq “你的程序”} ...然后 $program.uninstall()
  • 您遇到的错误是什么?还是直接将控制权交还给 shell 没有任何东西?
  • 我认为这是卸载包的错误/功能。如果提供程序名称是 Programs,则 cmdlet 不会将其卸载。这意味着您最初没有使用包管理器来安装程序
  • Francesco - 您关于 Win32 _Product 类的 cmets 不正确。为什么不在你的环境中尝试我的命令。
  • @m0lochwalker:我试过你的命令,你可以从图片中看到,不工作。尝试运行Get-WmiObject -class Win32_Product | select Name,你会发现你的很多程序都不见了

标签: powershell nuget-package uninstallation


【解决方案1】:

Get-WmiObject -class Win32_Product是一只必须死的老恐龙。

Get-Package 可能已损坏,我将其标记为 official Microsoft repository

与此同时,Mike F Robbins 帮助我了解了Win32_Product 的腐烂程度,他将我带到了这个awesome post,在那里您可以将代码复制粘贴到test.ps1 文件中,然后通过执行@ 将其安装到您的PowerShell 系统中987654330@

现在您已经安装了Get-Software 方法,该方法将帮助您以光速进入您的程序(不像Win32_Product)。

现在我可以使用了:

Get-Software | Where-Object { $_.DisplayName -like "*Notepad*" } | Format-Table

要查看 Notepad++,我可以使用 UninstallString 卸载它

不是我想要的,而是我发现的最接近工作的东西。 如果您找到更好的回复,请随时添加新回复。

编辑:确实存在错误,Microsoft 正在解决它。

现在你可以使用:

get-package *notepad* |% { & $_.Meta.Attributes["UninstallString"]}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2017-04-22
    • 2013-11-10
    • 2023-01-21
    • 1970-01-01
    相关资源
    最近更新 更多