Right now I´m working on project to dispose two old print servers. A issue with these servers is that no one used a routine to delete printers from the server when they physically powered off the printers mapped on the server. To solve this I used powershell to collect all printers from the server and then do a ping to the portname of each printer and list the ones who didn’t respond, in an array. Then I use that array to delete the printers from the server.
#------------------------------------------------------------- #NAME: Delete_Printers.ps1 #AUTHOR: Viktor Lindström # #COMMENTS: Delete printers on remote server that don´t respond on ping. #------------------------------------------------------------- #Collect all printers $AllPrinters = Get-Printer -ComputerName srv-print05 | where portname -Like "*prn*" #create an empty array $DownPrinters = @() #collect printers that don't respond on ping foreach ($printer in $AllPrinters) { $DownPrinters += Test-NetConnection $printer.PortName -ErrorAction SilentlyContinue | where pingsucceeded -eq $false Write-Host "testar ping mot" $printer.PortName } # Delete printers that didn´t respond on ping foreach ($Printer2 in $DownPrinters) { $Getprint = Get-Printer -ComputerName srv-print05 | where portname -EQ $printer2.computername Remove-Printer -InputObject $Getprint }