Win10打印机管理全攻略:从图形界面到PowerShell命令
1. 从“找不到打印机”到“一览无余”为什么需要列出已安装的打印机前几天帮同事处理一个文档他需要打印一份紧急合同结果在Word的打印对话框里翻来覆去就是找不到那台刚连接好的网络打印机。他急得满头大汗嘴里念叨着“我明明装好了啊”。我过去一看问题其实很简单他之前安装过这台打印机的多个驱动版本比如一个用于普通文档一个用于高精度照片系统里存在多个指向同一台物理设备的“打印机”而Word默认选中的是那个错误的、状态为“脱机”的实例。这个场景相信很多在Win10环境下办公的朋友都遇到过。“列出所有已安装的打印机”这个操作听起来基础但却是解决一系列打印问题的第一步也是关键一步。它不仅仅是打开“设备和打印机”窗口看一眼那么简单。对于IT管理员需要批量审计公司电脑的打印设备对于普通用户在重装系统前需要备份打印机配置或者在打印机共享出现故障时需要理清本地与网络打印机的逻辑关系甚至是在使用一些专业软件如CAD、财务软件进行打印设置时也需要明确知道系统识别到的打印机具体名称和端口。仅仅依赖图形界面GUI有时并不够用尤其是在需要自动化、批量处理或深度排查时命令行工具的价值就凸显出来了。本文将带你彻底掌握在Win10上列出所有打印机的几种核心方法。我们不会停留在简单的控制面板操作而是会深入Windows PowerShell和命令提示符CMD揭秘如何通过命令获取更详细、更结构化的打印机信息。你会发现当图形界面“失灵”或不够高效时这些命令行工具才是真正的“幕后高手”。2. 图形界面入门控制面板与“设置”应用的双重路径对于大多数用户通过图形界面查看打印机是最直观的方式。Win10提供了两套略有差异的图形界面传统的控制面板和现代的“设置”应用。了解两者的区别和适用场景能让你更高效地解决问题。2.1 传统控制面板信息最全的“老管家”控制面板里的“设备和打印机”视图是信息呈现最全面、操作逻辑最接近历代Windows版本的地方。你可以通过多种方式打开它最直接的方法在任务栏的搜索框或按下Win S中直接输入“控制面板”并打开然后选择“查看设备和打印机”。运行命令按下Win R输入control printers后回车。这个命令会直接打开“设备和打印机”窗口是我个人最常用的快捷方式。通过设置中转打开“设置”-“设备”-“打印机和扫描仪”在右侧相关设置下点击“设备和打印机”。打开后你会看到一个包含所有设备类别的窗口。重点关注“打印机”部分。这里列出的每一个图标都代表一个在系统中注册的“打印队列”它可能对应一台真实的物理打印机也可能是一个虚拟打印机如“Microsoft Print to PDF”、“Fax”或者一个指向网络打印机的连接。注意这里显示的“打印机”名称是安装驱动时你自定义或默认生成的“友好名称”它和驱动文件本身的名字、打印服务器的共享名可能都不相同。这是后续使用命令行时需要对应起来的关键信息。在这个视图里你可以右键点击任一打印机选择“打印机属性”。在“常规”选项卡中你可以看到更详细的型号、位置信息在“端口”选项卡中可以看到它具体连接在哪个端口上如USB001、IP地址等。这些信息对于高级排查至关重要。2.2 现代“设置”应用简洁但可能“藏私”Win10的“设置”-“设备”-“打印机和扫描仪”界面设计更现代列表更简洁。它会优先显示系统认为“常用”或“默认”的打印机。然而正是这种“简洁”可能带来误导。一个关键的差异点“设置”应用中的列表有时并不会显示所有通过传统方式安装的打印机特别是某些旧式驱动安装的打印机或者状态异常如驱动损坏的打印机。它更像一个经过筛选的“快捷视图”。而控制面板的“设备和打印机”则更像是底层数据库的完整“管理员视图”。因此当你怀疑打印机列表不全时第一反应应该是去控制面板里确认而不是只相信“设置”应用。实操心得我习惯将control printers这个运行命令创建一个桌面快捷方式。当打印出现问题时首先运行它查看完整的打印机列表和每个打印机的状态图标是否有感叹号、是否脱机这能最快地定位问题是出在单个打印机上还是整个打印子系统上。3. 命令行威力初显命令提示符下的打印机枚举当需要自动化脚本、远程查询或者图形界面无法正常加载时命令提示符CMD是你的可靠选择。它通过Windows Management Instrumentation命令行工具来获取系统信息。3.1 使用wmic命令获取结构化列表wmicWindows Management Instrumentation Command-line是一个功能强大的命令行工具可以查询几乎所有的系统硬件和软件信息。对于打印机我们可以使用以下命令wmic printer get name, portname, drivername, default, network执行这个命令后你会得到一个格式清晰的表格输出NamePortNameDriverNameDefaultNetworkMicrosoft Print to PDFPORTPROMPT:Microsoft Print To PDF DriverTRUEFALSEHP LaserJet MFP M436n192.168.1.100HP Universal Printing PCL 6FALSETRUEFaxSHRFAX:Microsoft Shared Fax DriverFALSEFALSE参数解析与排查价值Name: 就是在控制面板里看到的打印机友好名称。这是用户交互时最主要的标识。PortName: 打印机连接的端口。对于USB打印机通常是USB001、USB002这样的格式对于网络打印机则是它的IP地址如192.168.1.100或主机名端口如\\SERVER\HPPrinter。如果这里显示invalid或者为空通常意味着端口配置错误或打印机连接中断。DriverName: 驱动程序的名称。这个名称通常比较固定是驱动包内部的标识。当打印机出现乱码或功能异常时核对这里是否是正确的驱动名是判断驱动是否损坏或错装的第一步。Default: 是否为默认打印机。TRUE表示是FALSE表示否。Network: 是否为网络打印机。TRUE表示是网络打印机FALSE表示是本地直接连接的打印机。为什么用wmic而不仅仅是看图形界面因为它的输出是结构化的文本可以被其他命令如findstr过滤也可以重定向到文件 printers.txt用于备份或报告。例如你想快速找出所有网络打印机可以运行wmic printer where networktrue get name, portname3.2 使用printui命令调用打印管理对话框printui.dll是Windows打印系统的用户界面库通过rundll32命令可以调用它的一些功能。虽然它不直接列出列表但能快速打开关键的管理窗口。打开打印机服务器属性可以查看所有端口和驱动rundll32 printui.dll,PrintUIEntry /s /t2打开“添加打印机”向导在排查时可用于重新添加或测试驱动rundll32 printui.dll,PrintUIEntry /il这些命令在编写批处理脚本为不太懂电脑的用户一键打开特定打印管理界面时非常有用。踩坑记录有一次用户的“设备和打印机”窗口打开后一片空白什么也不显示。图形界面完全失效。这种情况下wmic printer list brief命令依然可以正常列出所有打印机这立刻让我排除了打印机服务彻底崩溃的可能性将问题聚焦在用户配置文件或Shell扩展冲突上。命令行工具在GUI故障时是无可替代的诊断底线。4. PowerShell进阶获取更强大、更灵活的控制能力Windows PowerShell比CMD更强大它面向对象处理数据的能力远超纯文本的CMD。对于打印机的管理PowerShell提供了Get-Printer和Get-PrintJob等一套完整的Cmdlet。4.1 使用Get-Printer命令面向对象的完整信息查询在PowerShell管理员或非管理员模式均可但某些属性需要管理员权限中最基本的命令是Get-Printer这会输出一个包含名称、计算机名、类型、驱动程序名称等基本属性的列表。但它的真正威力在于可以输出详细的对象属性并进行灵活的筛选和格式化。例如获取最详细的列表Get-Printer | Format-List *这条命令会列出每一个打印机的所有属性可能多达几十项包括Name,DriverName,PortName,Shared,ShareName,Published是否在AD中发布,DeviceType,Status等。常用属性解析与应用场景JobCount: 当前排队中的打印作业数。如果某个打印机JobCount一直不为0且作业不减少很可能出现了卡纸、缺纸或后台处理程序挂起。Status: 打印机的当前状态如Normal,Error,Offline。可以通过Get-Printer | Where-Object {$_.Status -ne Normal}快速找出所有状态异常的打印机。Shared和ShareName: 明确该打印机是否被共享以及共享名是什么。在排查网络共享打印故障时这是必须核对的信息。4.2 信息筛选、导出与自动化脚本示例PowerShell的管道|和筛选功能让数据处理变得简单。示例1导出所有网络打印机的详细信息到CSV文件用于资产统计。Get-Printer | Where-Object {$_.Type -eq Connection} | Select-Object Name, DriverName, PortName, ComputerName | Export-Csv -Path C:\NetworkPrinters.csv -NoTypeInformation -Encoding UTF8这里-Type属性为Connection的通常是网络打印机包括共享打印机。导出的CSV文件可以用Excel打开清晰明了。示例2一键禁用所有状态为“错误”的打印机。Get-Printer | Where-Object {$_.Status -eq Error} | Disable-Printer -Confirm:$false这个命令在远程维护多台电脑需要快速隔离故障打印机时非常高效。-Confirm:$false参数用于跳过确认提示。示例3对比驱动版本找出需要更新的打印机。假设你知道新驱动的名称是“HP Universal Printing PCL 6 (v2.0)”可以运行Get-Printer | Where-Object {$_.DriverName -notlike *Universal*PCL*6*} | Format-Table Name, DriverName这样可以快速找出所有驱动名称中不包含“Universal PCL 6”关键字的打印机它们可能还在使用旧版驱动。个人经验之谈在部署新的网络打印机驱动后我经常会写一个PowerShell脚本循环检查域内所有目标计算机使用Invoke-Command远程执行Get-Printer确认新打印机是否成功安装并验证其驱动名称和端口是否正确。这种自动化检查的效率是手动登录每台电脑无法比拟的。5. 系统配置与注册表探寻打印机信息的终极仓库当以上所有方法都显得“隔靴搔痒”或者你需要理解打印机配置的存储原理时就不得不深入到系统配置和Windows注册表了。这里存放着打印机定义的最终源头。5.1 打印服务管理printmanagement.msc这是一个专业的管理工具包含了比控制面板更丰富的视图。按下Win R输入printmanagement.msc并运行。如果系统提示需要安装它通常包含在“打印和文件服务”管理工具中。打开后展开“打印服务器”-“本地”-“打印机”这里会列出所有打印机。它的优势在于驱动视图可以单独查看“驱动程序”文件夹里面列出了所有已安装的驱动程序包无论当前是否有打印机在使用它。这对于清理陈旧的、无用的驱动文件非常有用。端口视图清晰列出所有配置的打印端口TCP/IP、本地端口等你可以看到哪个端口被哪个打印机使用。更佳的组织性对于拥有大量打印机的服务器或电脑管理起来比控制面板更清晰。5.2 注册表深处的打印机密钥所有打印机的配置信息最终都存储在Windows注册表中。相关的主要路径在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers警告直接编辑注册表风险极高错误修改可能导致系统或打印功能不可用。以下内容仅供了解和高级故障排查不建议非专业人员修改。在这个Printers键下你会看到一系列以打印机“友好名称”命名的子键但名称中的空格等字符可能被编码。点开任意一个子键你可以看到海量的值项例如Name: 打印机名称。Port: 使用的端口。Printer Driver: 驱动程序名称。Print Processor: 打印处理器通常是winprint。SpoolDirectory: 后台打印文件夹路径。一个实战排查案例用户报告一台网络打印机反复提示“需要用户干预”。检查驱动、端口、网络均无问题。最后在注册表中该打印机的配置项下发现一个DsDriverSetup的二进制值异常。通过对比一台正常电脑上同一打印机的注册表项将异常值恢复问题得以解决。这种问题图形界面和常规命令是无法触及的。为什么需要了解注册表因为它能解释很多“灵异现象”。例如为什么在控制面板删除了打印机但某些软件里还能看到可能是因为注册表项没有完全清除。为什么重装同型号打印机驱动会失败可能是因为旧驱动的注册表残留项冲突。知道信息存储在哪里是进行深度清理和修复的基础。6. 实战场景串联从列出信息到解决真实问题掌握了各种列出打印机的方法后我们如何将它们串联起来解决文章开头提到的那些实际问题呢下面通过几个典型场景演示一个完整的排查思路。6.1 场景一打印机共享失败客户端连接不上问题用户A共享了打印机用户B通过网络路径\\A-PC\HPPrinter连接时失败。排查链路在主机A上验证共享基础运行control printers右键点击目标打印机 - “打印机属性” - “共享”选项卡。确认“共享这台打印机”已勾选记下“共享名”。在PowerShell中运行Get-Printer -Name 打印机名称 | Select-Object Shared, ShareName进行双重确认。运行net share命令查看是否列出了该打印机的共享名。如果没有可能是共享服务或权限问题。在主机A上检查防火墙与高级共享设置确保“文件和打印机共享”规则在Windows Defender防火墙中启用专用和公用网络都需要检查。在“网络和共享中心”-“高级共享设置”中确保当前网络配置文件下“启用文件和打印机共享”已打开。在客户端B上排查连接路径首先尝试在B电脑的“运行”中直接输入\\A-PC看能否访问A电脑的共享根目录。如果不行是网络发现或身份验证问题。如果能访问再输入\\A-PC\HPPrinter。如果提示权限错误需要在A电脑上为B电脑的用户或Everyone组添加打印权限。使用命令行在B电脑上检查已安装的打印机在B电脑上运行Get-Printer查看是否已经存在一个从\\A-PC\HPPrinter安装的打印机对象。如果存在但其状态异常可以尝试Remove-Printer删除后重新添加。运行Test-NetConnection -ComputerName A-PC -Port 445测试到主机A的SMB端口连通性。6.2 场景二重装系统前备份打印机配置需求电脑需要重装Win10系统希望重装后能快速恢复所有打印机设置包括复杂的网络打印机IP和驱动设置。备份方案信息清单备份在PowerShell中运行Get-Printer | Select-Object Name, DriverName, PortName, ShareName, Published, Comment | Export-Csv -Path D:\PrinterBackup\PrinterList.csv -NoTypeInformation -Encoding UTF8这个CSV文件是你的“地图”记录了所有打印机的关键配置信息。驱动文件备份可选但推荐打印机驱动文件通常位于C:\Windows\System32\spool\drivers和C:\Windows\System32\driverstore等目录但手动备份复杂。更稳妥的方法是对于每台打印机尤其是型号较老或特殊的提前从其官方网站下载好对应Win10版本的驱动程序安装包保存在非系统盘。恢复流程新系统安装后首先安装必要的驱动程序尤其是芯片组和网络驱动。打开备份的CSV文件按照清单优先安装本地USB打印机。对于网络打印机使用“添加打印机”-“我需要的打印机不在列表中”-“使用TCP/IP地址或主机名添加打印机”然后输入备份的IP地址和驱动信息。对于共享打印机通过\\计算机名\共享名的路径添加。经验技巧对于有大量网络打印机的环境可以考虑使用打印服务器物理或内置在路由器/Windows Server中。这样客户端只需要连接打印服务器上的一个共享队列所有驱动和配置都在服务器端管理。重装客户端系统时只需重新连接这一个共享打印机即可极大地简化了维护工作。6.3 场景三系统报错“打印机驱动无法使用”或“打印后台程序服务未运行”问题打印时弹出驱动错误或提示后台程序服务问题。深度排查首先列出打印机观察异常运行Get-Printer。如果列表为空或者所有打印机状态异常那很可能是系统级的打印服务Spooler出了问题。检查打印后台处理程序服务运行services.msc打开服务管理器找到“Print Spooler”。或者在PowerShell中以管理员身份运行Get-Service -Name Spooler查看其状态Status是否为“Running”启动类型StartType是否为“Automatic”。如果服务停止尝试启动它Start-Service -Name Spooler。如果启动失败查看事件查看器eventvwr.msc中“Windows日志”-“系统”下的相关错误事件。针对特定打印机的驱动问题在Get-Printer的输出中找到出问题的打印机记下其DriverName。打开“打印管理”printmanagement.msc在“驱动程序”中查找这个驱动。尝试右键“删除驱动程序包”并勾选“删除驱动程序和驱动程序包”。注意这会删除所有使用该驱动的打印机请谨慎操作。然后从打印机官网下载最新驱动重新安装。终极清理——注册表与文件残留如果以上无效可能是驱动或配置残留导致。停止Print Spooler服务。清空后台打印文件夹C:\Windows\System32\spool\PRINTERS里面的文件可以全部删除。在注册表编辑器中备份后尝试删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\[你的系统架构]\Drivers和...\Printers下相关的可疑键值需要对照正常电脑或非常小心。重新启动Print Spooler服务然后重新添加打印机。这个过程体现了从“列出信息”开始逐步深入结合服务管理、文件操作和注册表检查的完整故障排查树。列出打印机是起点它告诉你“有什么”结合状态信息它告诉你“谁病了”再结合其他工具你才能诊断出“病根”并“治疗”。