使用Powershell失败删除networking打印机

我做了一个删除networking打印机PowerShell脚本。 它在GPP中按照用户首选项运行,并在任何会话login时运行。

这是脚本。 它确实使用一个networking主机地址来search打印机,该networking主机地址与var $端口相同,但是不具有var $ imprimante的名称该脚本确实使用TCP / IP端口和WSD端口查找打印机

get-date > C:\Temp\debug.txt ###Variables### $imprimante = "001 - HP LaserJet Pro M400 color M451dn (Salle prof)" $port = "10.26.57.21" ###End### Write-Host "Start Standard TCP/IP Printer" Get-WmiObject win32_tcpipprinterport | select name, hostaddress | %{ $printer = New-Object System.Object $printer | Add-Member -type NoteProperty -Name Name -Value $_.name -PassThru | Add-Member -type NoteProperty -Name HostAddress -Value $_.HostAddress if ($printer.hostaddress -like $port) { $name = $printer.name $p = Get-WmiObject win32_Printer -Filter "PortName like '$name' and not (Name like '$imprimante')" $count = $p | measure if ($count.count -gt 0) { $pn = $p | Select property -ExpandProperty Name Write-Host "The printer '$pn' is going to be removed." $p.delete() } } } Write-Host "End Of Standard TCP/IP Printer" Write-Host "Start Of WSD Printer" Get-WmiObject win32_Printer -filter "PortName like 'wsd%'" | %{ $p = $_ $pn = $_.name $pc = $pn | measure if ($pc.count -gt 0) { $address = (Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\Print\Printers\$pn\PrinterDriverData\ -Name HPEWSIPAddress).HPEWSIPAddress if ($address -like "$port*" -and $pn -notlike "$imprimante") { Write-Host "The printer '$pn' is going to be removed." $p.delete() } } } Write-Host "End Of WSD Printer" 

到目前为止,脚本运行良好,计划任务也运行,但有一个持续的问题。 要删除的最后一台打印机(或打印机,如果只有一台)仍然显示在“设备和打印机”中。

打印机似乎被“卸载”,因为它不再可用。 这是前面的脚本(对不起,法国环境) 打印机之前的图片删除

这是删除后的脚本打印机后的图片

关于打印的所有选项都消失了,但打印机仍然保留。 唯一摆脱它是手动删除它。

任何人都见过这个? 我已经尝试删除“Rundll printui.dll”的打印机,并没有成功。

非常感谢