Adding printers on Windows sucks. prinstall fixes it.

One command. The right vendor driver, pulled from the Microsoft Update Catalog. Installed.

built in Rust 12 MB binary scriptable MIT licensed

What it does

Built for MSP technicians running it locally or through RMM remote shells.

01

Multi-method discovery

TCP port probe, IPP, SNMP, and local Get-Printer all in one parallel pipeline. Works even on printers that have SNMP disabled.

02

Deterministic driver matching

Scrapes the Microsoft Update Catalog, downloads the candidate driver, parses the INF, and confirms a 1284_CID_* hardware-ID match before installing. No guessing.

03

Network + USB printers

One binary handles both install paths. USB printers hot-swap their driver via Set-Printer without re-creating the queue.

04

Clean remove

Queue → driver → port cleanup with spooler-lag retry and driver-store package removal. No orphaned ports, no dead drivers cluttering Print Server Properties.

05

Scriptable CLI, lazy-style TUI

Pipe --json to jq for RMM automation, or drop into a dense two-panel lazy-style TUI when launched from a real terminal.

06

Readable errors

PowerShell stderr is parsed and HRESULT-decoded before you see it. No more drowning in CategoryInfo and FullyQualifiedErrorId noise.

Watch it work

prinstall add 192.168.1.50 --verbose · real terminal output

Windows PowerShell
PS> prinstall add 192.168.1.50 --verbose [add] SNMP → "Brother MFC-L2750DW series" [add] IPP device ID: MFG:Brother;MDL:MFC-L2750DW series;CID:Brother Laser Type1;... [add] Auto-selected driver: Brother Universal Printer [add] Download failed: No download URL available. [PS ] Add-PrinterDriver -Name 'Brother Universal Printer' [PS ] HRESULT 0x80070705: driver does not exist in the driver store [add] Primary install failed. Trying catalog resolver with device ID... [resolver] Searching catalog by CID: 'Brother Laser Type1' [resolver] Catalog returned 5 result(s), scanning top 5 [resolver] HWID candidates: 1284_CID_BROTHER_LASER_TYPE1, BROTHER_LASER_TYPE1, ... [resolver] #1: Brother - Printer - 10.0.17119.1 [resolver] GET https://catalog.s.download.windowsupdate.com/.../prnbrcl1.cab [resolver] expand → %APPDATA%\prinstall\staging\catalog\... [resolver] ★ MATCH: prnbrcl1.inf → Brother Laser Type1 Class Driver [PS ] pnputil /add-driver '...\prnbrcl1.inf' /install [PS ] Add-Printer -Name 'Brother MFC-L2750DW series' -DriverName ... ✓ Printer installed successfully! Name : Brother MFC-L2750DW series Driver: Brother Laser Type1 Class Driver Port : IP_192.168.1.50 Installed via Microsoft Update Catalog. Matched HWID: 1284_CID_BROTHER_LASER_TYPE1.

Four tiers, one command

prinstall add walks the pipeline in priority order — only escalates when the previous tier comes up empty.

TIER 01

Local driver store

Reuse what's already installed. No network, no side effects. Instant.

TIER 02

Manufacturer download

Pull from the embedded URL manifest when the vendor publishes a stable direct link.

TIER 03

Update Catalog + INF HWID

Search by IPP CID, download a candidate CAB, parse the INF, match the synthesized hardware ID. Deterministic.

TIER 04

IPP Class Driver

The always-works safety net for any printer that speaks IPP Everywhere (Windows 8+).

Install

Single 12 MB binary. Drop it on PATH and go.

1

Grab the latest Windows release:

iwr https://github.com/limehawk/prinstall/releases/latest/download/prinstall.exe -OutFile prinstall.exe
2

Scan your subnet for printers:

.\prinstall.exe scan
3

Add one:

.\prinstall.exe add 192.168.1.47
4

Or launch the interactive TUI:

.\prinstall.exe