Network Printers not Showing with Get-Printer

I can’t figure out why Get-Printer is not showing any network printers installed on my workstation. Isn’t it supposed to show all printers installed locally - even if it’s a remote printer managed by a print server?

Hi,
A long time ago I had the same problem.
Get-printer only shows a local printer, but I also had network printers connected.
My printer list seems to have crashed. When I added another printer and run Get-printer, it shows everything I had connected to my workstation at that time.
Adding a new network printer refreshed my printer list, I guess.

I actually tried that. But I was working through a VPN. Still didn’t show any network printer after it was added.

Today I’m in the office and tried adding a network printer again. After it was installed and a test print went through I tried Get-Printer again. Still no network printers show in the output.

Interested to know if any of the other Get-Print* command works?

Here’s my Get-Printer


Here’s my Get-PrinterDriver which includes the Ricoh drivers for the networked printer.
Get-PrinterDriver
Here’s my Get-PrinterPort
Get-PrinterPort

Interesting … just an FYI, but my network printers show as “Local” in the “Type” column. Are you sure the printer using the “WSD Port” is not your networked printer?

I don’t know if it helps but my network printers are listed with the Type Connection

The WSD Port printer is my home wireless HP printer. It’s odd that Get-Printer will list it but not any of the domain/networked printers that I am connected to. It’s simply not listing any type “connection” printers.

Why or whatfor do you actually need it? There might be another way.

I need it because we’re going to swap out an old print server with a newer one. I need to write a script that will detect printer configuration and switch it over to the new print server.

I also tried Get-WMIObject and it too cannot see the network printers.

We are wanting to stage the switch over to limit the number of users being migrated from old to new print server. We don’t want a flood of help desk calls if something goes wrong. So I was thinking of a script that we have users run to switch them over.

Did you try to read the registry of the users?

Here you have some examples:

None of the options discussed in that work.

I have found some PS code that will read the per user entries and display them. I might have to settle for that going forward.

param (
    [string]$Comp = "localhost"
)

function ListAllPrinters {
    param (
        [string]$Comp
    )

    Invoke-Command -ComputerName $Comp -ScriptBlock {
        Get-ChildItem Registry::\HKEY_Users | 
        Where-Object { $_.PSChildName -NotMatch ".DEFAULT|S-1-5-18|S-1-5-19|S-1-5-20|_Classes" } | 
        Select-Object -ExpandProperty PSChildName | 
        ForEach-Object { Get-ChildItem Registry::\HKEY_Users\$_\Printers\Connections -Recurse | Select-Object -ExpandProperty Name }
    }
}

# Main
ListAllPrinters $Comp

So far it’s the only thing that can identify a network printer. I’ll have to adapt that for what we need.

We find that group policy or other management platforms are more robust and reliable then scripts.