Param($computer, $printerPath, [switch]$list, [switch]$setDefault, [switch]$deletePrinter) Function Get-Printer($computer) { Get-WmiObject -class Win32_Printer -computer $computer } #end Get-Printer Function Format-LocalPrinter($printObject) { Write-Host -foregroundcolor cyan "Local printers on $computer" $printObject | Format-Table -property deviceID, location, default, comment -autosize -wrap } #end Format-Printer Function Set-DefaultPrinter($printObject, [string]$printerPath) { Write-Host -foregroundcolor cyan "Setting $printerPath to default printer" $dp = $printObject | Where-Object { $_.deviceID -match $printerPath } $dp.SetDefaultPrinter() } #end Set-DefaultPrinter Function Remove-Printer($printObject, [string]$printerPath) { Write-Host -foregroundcolor cyan "Removing $printerPath" $dp = $printObject | Where-Object { $_.deviceID -match $printerPath } $dp.psbase.Delete() } Function Get-SuccessCode($code) { if($code.ReturnValue -eq 0) { Write-Host -foregroundcolor green "Operation suceeded!" } Else { Write-Host -foregroundcolor black "Operation failed with $($code.returnvalue)" } } #end get-successcode # *** Entry Point to Script *** if($list) { Format-LocalPrinter(Get-Printer($computer)) ; exit } if($setDefault) { Get-SuccessCode -code ` (Set-DefaultPrinter -printObject(Get-Printer($computer)) -printerPath $printerPath) exit } If($deletePrinter) { Remove-Printer -printObject (Get-Printer($computer)) -printerPath $printerPath exit }