“获取包* notepad * |卸载包-Force”不起作用

时间:2019-02-18 03:39:08

标签: powershell nuget-package uninstall

我将以管理员身份打开PowerShell

我跑步:

Get-Package *notepad*

PowerShell向我显示 Notepad ++(32位x86)

然后我运行:

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

PowerShell没有卸载Notepad ++

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

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

enter image description here

尝试使用您的环境,不会卸载任何东西。

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

enter image description here

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

1 个答案:

答案 0 :(得分:0)

Get-WmiObject -class Win32_Product是必须灭绝的古老恐龙。

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

与此同时,Mike F Robbins帮助我了解了Win32_Product有多烂,他把我带到了awesome post,您可以在其中复制代码并将其粘贴到test.ps1文件中并进行安装通过. .\test.ps1

将其导入到PowerShell系统中

现在,您已经安装了Get-Software方法,该方法将帮助您轻松地进入程序(与Win32_Product不同)。

现在我可以使用:

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

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

将其卸载

enter image description here

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

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

现在您可以使用:

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