Discover printers across your network over SNMP and flag which models are Microsoft Universal Print ready. A single-file, zero-install PowerShell utility that scans one or more subnets over SNMP v2c (with automatic SNMPv1 fallback) and reports every responding device (printers by default) in a local web interface. For each printer it pulls IP, MAC, manufacturer, model, serial, name/location, page count and toner/supply data, then flags whether the model is on Microsoft's Universal Print Ready list (bundled offline, 1,488 models). It's one .ps1: no modules, no admin rights, and no internet. Copy it to any Windows machine and run.
Find a file
2026-06-08 09:18:08 -07:00
.gitignore Initial public release (v1.0.0) 2026-06-07 18:33:45 -07:00
CHANGELOG.md v1.0.1: match printers that report a bare numeric model (e.g. Canon iR-ADV 4945/527) 2026-06-08 09:18:08 -07:00
Invoke-SNMPPrinterScan.ps1 v1.0.1: match printers that report a bare numeric model (e.g. Canon iR-ADV 4945/527) 2026-06-08 09:18:08 -07:00
LICENSE Initial public release (v1.0.0) 2026-06-07 18:33:45 -07:00
README.md Initial public release (v1.0.0) 2026-06-07 18:33:45 -07:00
up-models.txt Initial public release (v1.0.0) 2026-06-07 18:33:45 -07:00

Universal Print Readiness Scanner

Discover printers across your network over SNMP and flag which models are Microsoft Universal Print ready.

A single-file, zero-install PowerShell utility that scans one or more subnets over SNMP v2c (with automatic SNMPv1 fallback) and reports every responding device (printers by default) in a local web interface. For each printer it pulls IP, MAC, manufacturer, model, serial, name/location, page count and toner/supply data, then flags whether the model is on Microsoft's Universal Print Ready list (bundled offline, 1,488 models).

It's one .ps1: no modules, no admin rights, and no internet. Copy it to any Windows machine and run.

Authorized use only. This is a network discovery tool. Run it only on networks you own or have explicit permission to assess.

Requirements

  • Windows 10 / Windows Server 2016 or newer (Windows PowerShell 5.1, built in). Also runs on PowerShell 7+.
  • SNMP enabled on the target printers (almost always on by default) with a community string you know (commonly public).
  • Outbound UDP/161 reachable from the machine running the tool to the target subnets (watch host-based firewalls and VLAN ACLs).

Running it

From a PowerShell prompt in this folder:

powershell -ExecutionPolicy Bypass -File .\Invoke-SNMPPrinterScan.ps1

It binds to http://127.0.0.1:8080/ (loopback only) and opens your default browser. If 8080 is busy it automatically tries the next ports. The window stays open while serving; press Ctrl+C to stop.

Optional switches:

  • -Port 9000 use a specific starting port.
  • -NoBrowser don't auto-launch the browser.

Using the web UI

  1. The Subnets box is pre-filled with the machine's own local subnets. Edit it - one CIDR (10.0.10.0/24) or single IP per line. "Use local subnets" re-detects them.
  2. Set the community string (default public), and adjust timeout / retries / concurrency if needed.
  3. Leave Printers only checked to filter out switches, servers, etc.
  4. Click Start scan. Progress and results stream in live.
  5. Sort by any column, type in the filter box, tick Only UP Ready, and click Export CSV for a spreadsheet.

The Universal Print column shows UP Ready (with the matched model name) or Not in list. Important nuance: this list is Microsoft's native Universal Print Ready list. Not in list means "not natively ready" - it does NOT mean incompatible. Most network printers that aren't on the list can still be onboarded through the Universal Print connector (for example, the whole Xerox AltaLink C8200 series works via the connector even though, as of this writing, only some series appear natively). So treat Not in list as "verify manually / likely needs the connector."

Matching is series-aware: a device like AltaLink C8245 correctly matches the AltaLink C8200 Series entry, while a C8100-series device matches its own series.

The model list (up-models.txt)

The full current list lives in up-models.txt next to the script (one Brand|Model per line). The scanner loads it automatically on startup and prints how many models were loaded and from where. To refresh it later, open the Microsoft page, expand each table, and replace the file - no need to touch the script. If up-models.txt is missing, the script falls back to an older list embedded inside it, so the .ps1 still runs on its own. For a customer site, copy both files together.

Scan phases (ICMP discovery, then SNMP)

By default the scan runs in two phases:

  1. ICMP discovery pings every address first. This finds which hosts are actually up and, importantly, the ping wakes printers that are asleep (a sleeping printer often ignores the first packet and answers a later one). On a big, sparse network this is much faster than firing SNMP at every address.
  2. SNMP then queries only the hosts that responded, so the heavier per-device work happens on a few hundred live hosts instead of tens of thousands of empty addresses.

The ICMP discovery first checkbox is on by default. Ping timeout (default 800 ms) and Ping attempts (default 2) control the wake-up behavior: raise attempts to 3 or the timeout to ~1500 ms for deep-sleeping printers, at the cost of a slightly longer discovery pass.

Turn ICMP discovery off for a site where printers block ping (ICMP). The tool then falls back to querying every address over SNMP directly (the original behavior).

Tuning for large or slow networks

  • Concurrency (default 128): higher finishes faster but sends more simultaneous UDP. 128-256 is fine on a wired LAN; drop it over VPN/WAN links.
  • Timeout (default 600 ms) and Retries (default 1): these apply to the SNMP phase. With ICMP discovery on, they only affect the live hosts, so you can afford to raise them.
  • Subnets are de-duplicated automatically, and octets with leading zeros (e.g. 192.168.007.0/24) are accepted and normalized to 192.168.7.0/24.
  • Expansion is capped at 70,000 hosts to avoid runaway scans.

How it works (for the curious)

  • The web UI is served from a raw loopback TcpListener, so there's no HTTP.sys URL reservation and no admin requirement.
  • SNMP is spoken directly over UDP with hand-built BER/ASN.1 packets - no SNMP module or Net-SNMP install needed.
  • Subnets are swept concurrently using a runspace pool; results are harvested and matched against the bundled Universal Print list as they arrive.
  • OIDs collected per device: sysDescr/sysName/sysLocation/sysContact, entPhysicalModelName/entPhysicalSerialNum, Printer-MIB prtGeneralPrinterName/prtGeneralSerialNumber/prtMarkerLifeCount (page count), hrDeviceDescr, and the first usable MAC from IF-MIB ifPhysAddress.

Limitations / notes

  • Speaks SNMP v2c and v1 (it tries v2c first, then falls back to v1 per host). SNMPv3-only secured devices are not read. A device with SNMP disabled, or using a non-default community, won't be seen until SNMP is enabled or the correct community is supplied.
  • The tool only reads (SNMP GET/GETNEXT). It never writes to devices.
  • The Universal Print list is a point-in-time snapshot from Microsoft Learn. Microsoft updates it periodically; re-pull it if you need the very latest models.

Security and privacy

  • The web UI binds to loopback only (127.0.0.1) using a raw TCP socket, so it is not exposed to the network and needs no admin rights or URL reservation.
  • SNMP is read-only (GET/GETNEXT). No credentials are stored; the community string is entered at scan time and kept in memory only.
  • No data leaves the machine. Nothing is sent anywhere; results live in the browser and in any CSV you choose to export.

Universal Print list attribution

up-models.txt is derived from Microsoft's published Universal Print Ready Printers list and consists of factual model names. It is a point-in-time snapshot; refresh it from that page when you need the latest models. Microsoft and Universal Print are trademarks of Microsoft Corporation; this project is not affiliated with or endorsed by Microsoft.

Disclaimer

Provided as-is, without warranty of any kind. You are responsible for ensuring you have authorization to scan the networks and devices you point it at.

License

MIT © Hayashi Technology Solutions, Inc.