Delete Method for Win32_printer does not completely remove a local printer

Welcome Forums General PowerShell Q&A Delete Method for Win32_printer does not completely remove a local printer

This topic contains 6 replies, has 4 voices, and was last updated by

4 years, 4 months ago.

  • Author
  • #19859

    Points: 21
    Rank: Member

    I have been working on a script to remove a locally added network IP Printer – that was originally added using the print wizard with plug and play drivers not hosted on a print server – from a few machines in my area at work. The problem that I have ran into is that whenever I query the correct printer using the following command the "delete" method removes the record from WMI, but the printer info remains in the "Devices and Printers" GUI even though you cannot print to it.

     (Get-WmiObject -class win32_printer | where-object {$_.Name -eq "PRINTER (HP LaserJet 500 color M551)"} ).delete()

    I initially thought that I was possibly forgetting to remove the win32_tcpipprinterport, but it does not use a tcpip port. I also thought that it might even have an authentication issue as the UAC is prompted when the printer is removed manually, but I could not find anything on this by searching the web. I would appreciate any insight on what may be going on. I also included a print out below of the cmdlet above excluding the delete method.

    PSComputerName              : TestComputer
    Status                      : Unknown
    Name                        : PRINTER (HP LaserJet 500 color M551)
    __GENUS                     : 2
    __CLASS                     : Win32_Printer
    __SUPERCLASS                : CIM_Printer
    __DYNASTY                   : CIM_ManagedSystemElement
    __RELPATH                   : Win32_Printer.DeviceID="PRINTER (HP LaserJet 500 color M551)"
    __PROPERTY_COUNT            : 86
    __DERIVATION                : {CIM_Printer, CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement}
    __SERVER                    : TestComputer
    __NAMESPACE                 : root\cimv2
    __PATH                      : \\TestComputer\root\cimv2:Win32_Printer.DeviceID="PRINTER (HP LaserJet 500 color M551)"
    Attributes                  : 576
    Availability                : 
    AvailableJobSheets          : 
    AveragePagesPerMinute       : 0
    Capabilities                : {4, 2, 3, 5}
    CapabilityDescriptions      : {Copies, Color, Duplex, Collate}
    Caption                     : PRINTER (HP LaserJet 500 color M551)
    CharSetsSupported           : 
    Comment                     : 
    ConfigManagerErrorCode      : 
    ConfigManagerUserConfig     : 
    CreationClassName           : Win32_Printer
    CurrentCapabilities         : 
    CurrentCharSet              : 
    CurrentLanguage             : 
    CurrentMimeType             : 
    CurrentNaturalLanguage      : 
    CurrentPaperType            : 
    Default                     : False
    DefaultCapabilities         : 
    DefaultCopies               : 
    DefaultLanguage             : 
    DefaultMimeType             : 
    DefaultNumberUp             : 
    DefaultPaperType            : 
    DefaultPriority             : 0
    Description                 : 
    DetectedErrorState          : 0
    DeviceID                    : PRINTER (HP LaserJet 500 color M551)
    Direct                      : False
    DoCompleteFirst             : True
    DriverName                  : HP LaserJet 500 color M551 PCL6
    EnableBIDI                  : False
    EnableDevQueryPrint         : False
    ErrorCleared                : 
    ErrorDescription            : 
    ErrorInformation            : 
    ExtendedDetectedErrorState  : 0
    ExtendedPrinterStatus       : 2
    Hidden                      : False
    HorizontalResolution        : 600
    InstallDate                 : 
    JobCountSinceLastReset      : 0
    KeepPrintedJobs             : False
    LanguagesSupported          : {50}
    LastErrorCode               : 
    Local                       : True
    Location                    : 
    MarkingTechnology           : 
    MaxCopies                   : 
    MaxNumberUp                 : 
    MaxSizeSupported            : 
    MimeTypesSupported          : 
    NaturalLanguagesSupported   : 
    Network                     : False
    PaperSizesSupported         : {7, 8, 1, 1...}
    PaperTypesAvailable         : 
    Parameters                  : 
    PNPDeviceID                 : 
    PortName                    : WSD-af3c56c0-8fef-4253-9512-fd17a59f565f.0067
    PowerManagementCapabilities : 
    PowerManagementSupported    : 
    PrinterPaperNames           : {Letter, Legal, Statement, Executive...}
    PrinterState                : 0
    PrinterStatus               : 3
    PrintJobDataType            : RAW
    PrintProcessor              : hpcpp145
    Priority                    : 1
    Published                   : False
    Queued                      : False
    RawOnly                     : False
    SeparatorFile               : 
    ServerName                  : 
    Shared                      : False
    ShareName                   : 
    SpoolEnabled                : True
    StartTime                   : 
    StatusInfo                  : 
    SystemCreationClassName     : Win32_ComputerSystem
    SystemName                  : TestComputer
    TimeOfLastReset             : 
    UntilTime                   : 
    VerticalResolution          : 600
    WorkOffline                 : False
    Scope                       : System.Management.ManagementScope
    Path                        : \\TestComputer\root\cimv2:Win32_Printer.DeviceID="PRINTER (HP LaserJet 500 color M551)"
    Options                     : System.Management.ObjectGetOptions
    ClassPath                   : \\TestComputer\root\cimv2:Win32_Printer
    Properties                  : {Attributes, Availability, AvailableJobSheets, AveragePagesPerMinute...}
    SystemProperties            : {__GENUS, __CLASS, __SUPERCLASS, __DYNASTY...}
    Qualifiers                  : {dynamic}
    Site                        : 
    Container                   : 
  • #19864

    Points: 0
    Rank: Member

    I haven't been able to reproduce this problem so far. What operating system are you using?

  • #19866

    Points: 0
    Rank: Member

    What error does it give you?

  • #19876

    Points: 21
    Rank: Member

    I am running the script on Windows 7 SP1 with PowerShell v. 4. There are no error codes generated.

    The delete method successfully runs and removes the printer from the Win32_Printer section; however, the device information (i.e. IP address, Manufacture ID, etc) and the WSD port still remain under Control Panel > Hardware and Sound > Devices and Printers. (Even though it cannot be used and there is no information under Win32_Printer).

    I did find more information for the device under CIM_LogicalDevice (Below) after I removed the printer using the method above, so I know that there are still remnants of this printer somewhere on the computer. I am just not sure how to remove the residual information so that the printer will not be displayed in Devices and Printers for users and if it may be edited/removed via WMI or CIM.

    Caption                     : PRINTER (HP LaserJet 500 color M551)
    Description                 : UMBus Enumerator
    InstallDate                 :
    Name                        : PRINTER (HP LaserJet 500 color M551)
    Status                      : OK
    Availability                :
    ConfigManagerErrorCode      : 0
    ConfigManagerUserConfig     : False
    CreationClassName           : Win32_PnPEntity
    DeviceID                    : IPBUSENUMROOT\UMB\2&BA1FFA4&0&URN:UUID:1B2
    ErrorCleared                :
    ErrorDescription            :
    LastErrorCode               :
    PNPDeviceID                 : IPBUSENUMROOT\UMB\2&BA1FFA4&0&URN:UUID:1B2
    PowerManagementCapabilities :
    PowerManagementSupported    :
    StatusInfo                  :
    SystemCreationClassName     : Win32_ComputerSystem
    SystemName                  : TestComputer
    ClassGuid                   : {4d36e97d-e325-11ce-bfc1-08002be10318}
    CompatibleID                :
    HardwareID                  : {UMB\UMBUS}
    Manufacturer                : HP
    Service                     : umbus
    PSComputerName              :
    • #19888

      Points: 0
      Rank: Member

      IMHO it's problem with driver. Try to replace driver with some other driver for a test purpose and run it again.

  • #19911

    Points: 527
    Helping Hand
    Rank: Major Contributor

    You can try using the WScript.Network method. I've used WMI to enumerate the printers and WScript.Network to Add\Remove the printers in the past and it's worked well.

    $wshNetwork = New-Object -ComObject WScript.Network
  • #19918

    Points: 21
    Rank: Member

    Ondrej, I agree that it may be an issue with the driver. I have added the same printer via script with a device specific driver instead of the Plug-N-Play driver, which was installed when the printer was installed manually, and that device may be completely removed by running the query first mentioned. Unfortunately changing the driver in testing is not going to do me any good on removing it from the computers in production.

    Also the issue may be related to the fact that the network printer is installed locally through the original PNP. (Sorry Rob I don't think your script will work on this one, but thanks for the suggestion). I found information for the device under "Win32_PnpEntity." with more information about the UMB Connection. Unfortunately I do not think there is a way to remove the device from this area of WMI. I think this may be the area that is causing it to hang around in "Devices and Printers."

The topic ‘Delete Method for Win32_printer does not completely remove a local printer’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort