目录
此提示详细介绍了在PowerShell中从Windows系统批量删除即插即用设备所需的步骤。该脚本旨在删除安装了多个副本的设备,但可以进行调整以适应其他条件。它需要PowerShell ISE和pnputil.exe才能工作。
介绍
最近在对Windows设备进行故障排除时,我发现在我的一些系统上安装了数百个多媒体设备副本。我想摆脱所有这些重复项,但GUI一次只允许卸载一个设备。手动执行此操作将是一个非常耗时的过程。在互联网上搜索了一种一次性删除它们的方法并且只是反复看到“它无法完成”(或其他无用的建议)后,我在Powershell中提出了这个解决方案,效果很好。
我想我应该把它贴在这里,以帮助其他试图删除大量设备的人,但无法找到一个解决方案。这适用于Windows 10、Windows 7和Windows 8,尽管我还没有在这些平台上尝试过。
使用代码
该脚本可以在单个命令中执行,但为了清楚起见,我将其分解为几个脚本行。它不必作为.PS1脚本运行,但它似乎只适用于PowerShell ISE。
要卸载具有给定名称的所有设备,请使用以下脚本:
$deviceName="Name of the device(s) you want to remove"
foreach ($dev in (Get-PnpDevice | Where-Object{$_.Name -eq $deviceName})) {
&"pnputil" /remove-device $dev.InstanceId
}
或者作为单个命令:
foreach ($dev in (Get-PnpDevice | Where-Object{$_.Name -eq "Name of device to remove"))
{ &"pnputil" /remove-device $dev.InstanceId }
就是这样!
兴趣点
还有其他方法可以枚举和过滤设备(例如Get-WmiObject),但这是我发现也适用于隐藏设备的唯一方法。
https://www.codeproject.com/Tips/5313040/Batch-Uninstall-Devices-in-PowerShell