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.

I would agree with Doug. Using the built in Printer migration and then defining the GPO to replace on the clients seems like a more reliable option.

I agree about using GPO’s, unfortunately our environment is a mixture of manually entered printer configurations (the majority of them) and some setup via GPO’s.

Furthermore it will be some time before we can standardize enough to use GPO’s to setup printers and printing for end users.

… sometimes a non technical solution is better than the most sophisticated technical one.

Sounds like the users are actually smart enough to set up a network printer by themselfs. :+1:t4: How about telling them to remove their old network printers and connect to some new ones? :wink:

That’d be the way I prefer. I consider them as grown up people living in the 21st century. If they usually work with their computers for at least a few hours each day they should be able to deal wtih some basic computer configuration work like connecting to a network printer or something like this.

And for the ones unable to do that by themselfs you probably have a user IT support. :man_shrugging:t4:

I finally got the bottom of why it wasn’t showing my installed network printers. Turns out that Get-Printer and the other WMI methods of getting the installed printers do not search out all printers installed on a computer. Instead they retrieve the printers that the USER has installed.

Our environment requires me to login with a lower privilege account and use run as administrator and enter my admin account credentials to do anything requiring elevated privilege’s.

This led me to launching PowerShell, VSCode etc in elevated (Administrator) mode because I do a lot of remoting.

Since the printers are installed using my lower privilege account and PowerShell is using my elevated account it couldn’t see the network printers because they’re not installed in the elevated account!