通过 PowerShell 添加网络打印机并创建一个标准 TCP/IP 端口,您可以使用 Add-PrinterPort 和 Add-Printer cmdlet。以下是一个详细的示例,演示了如何创建 TCP/IP 端口并添加网络打印机。使用 PowerShell 安装 Windows 网络打印机,您可以通过以下步骤来实现。下面提供了一些常用的 PowerShell 命令,用于添加网络打印机。

TCP/IP 规范、标准和技术文档来源

TCP/IP(传输控制协议/网际协议)是用于计算机网络通信的核心协议套件,它包含了多个协议,用于支持数据在网络中的传输、路由和管理。其标准和规范由多个标准化组织定义和发布,主要包括 IETF(Internet Engineering Task Force)和 ISO(国际标准化组织)等机构。

1. IETF(Internet Engineering Task Force)

IETF 是负责制定互联网相关标准和协议的国际组织,TCP/IP 相关的协议标准主要由 IETF 发布。

IETF TCP/IP 相关标准

  • RFC(Request for Comments):IETF 发布的技术文档,描述了互联网技术和标准,包括 TCP/IP 协议族的详细规范。

    • RFC 文档库:这是 TCP/IP 协议的权威来源,包括所有 TCP/IP 协议的详细标准和技术文档。
    • 经典的与 TCP/IP 相关的 RFC 文档:
      • RFC 791:《Internet Protocol》——定义了 IP(Internet Protocol,网际协议)标准。
      • RFC 793:《Transmission Control Protocol》——定义了 TCP(传输控制协议)标准。
      • RFC 768:《User Datagram Protocol》——定义了 UDP(用户数据报协议)标准。
      • RFC 2460:《Internet Protocol, Version 6 (IPv6)》——定义了 IPv6 的标准。
      • RFC 1122:《Requirements for Internet Hosts - Communication Layers》——定义了互联网主机通信的基本要求。
      • RFC 1123:《Requirements for Internet Hosts - Application and Support》——补充了主机在应用层的标准。
  • IETF RFC 按照协议类别:在 IETF 网站上,你可以按协议类别查找和阅读相关 RFC 文档,例如 IP、TCP、UDP、ICMP 等。

IETF 相关工作组

  • IETF 下设多个工作组负责定义不同领域的技术标准。与 TCP/IP 相关的工作组包括:
    • Internet Area Working Group (intarea):涉及互联网协议和相关技术的标准化工作。
    • Transport Area Working Group (tsvwg):涉及传输层协议的标准化工作。

2. ISO(国际标准化组织)

ISO 发布了一些与 TCP/IP 相关的国际标准,特别是在网络和通信协议方面。

ISO 相关标准

  • ISO/IEC 7498-1:《Information processing systems – Open Systems Interconnection – Basic Reference Model》——定义了开放系统互联(OSI)参考模型,为 TCP/IP 协议族提供了一个理论框架。
  • ISO/IEC 10747:《Information Technology – Telecommunications and Information Exchange between Systems – Open Distributed Processing (ODP) – Reference Model》——对开放分布式处理(ODP)提供标准。
  • ISO/IEC 13888:《Security techniques – Non-repudiation》——这对网络安全协议(包括 TCP/IP)中身份验证和数据完整性提供了相关标准。

3. RFC 中的重要标准概述

以下是一些 TCP/IP 相关的基础 RFC,概述了协议的设计和实现细节:

1. IP(Internet Protocol)

  • RFC 791:《Internet Protocol》——定义了 IPv4 的基本概念,包括 IP 数据包的结构、路由机制等。

  • RFC 2460:《Internet Protocol, Version 6 (IPv6)》——定义了 IPv6 的规范,解决了 IPv4 中的地址耗尽问题。

2. TCP(Transmission Control Protocol)

  • RFC 793:《Transmission Control Protocol》——定义了 TCP 协议,描述了数据包的可靠传输、流量控制、连接管理等机制。

3. UDP(User Datagram Protocol)

  • RFC 768:《User Datagram Protocol》——定义了 UDP 协议,是一种无连接的传输协议,适用于低延迟的应用。

4. ICMP(Internet Control Message Protocol)

  • RFC 792:《Internet Control Message Protocol》——定义了 ICMP 协议,用于在网络设备间传递控制消息和错误报告。

4. 网络协议族与模型

TCP/IP 协议套件包括许多协议,分为不同层级:

  • 应用层:HTTP、FTP、SMTP、DNS 等协议。
  • 传输层:TCP、UDP 协议。
  • 网络层:IP、ICMP、ARP、IPv6 等协议。
  • 数据链路层:以太网、PPP 等协议。

TCP/IP 参考模型与 OSI 模型(开放系统互联模型)相比,具有更简单的四层结构:应用层、传输层、网络层、链路层。

5. TCP/IP 技术白皮书与书籍

  • 《TCP/IP Illustrated》:由 W. Richard Stevens 编写,详细介绍了 TCP/IP 协议的原理、实现和调试方法,是 TCP/IP 学习者的重要参考书籍。
  • 《Internetworking with TCP/IP》:由 Douglas E. Comer 编写,深入介绍了 TCP/IP 协议及其在网络中的应用。

6. 官方和开源实现

  • Linux TCP/IP Stack:Linux 操作系统中的 TCP/IP 实现是开源的,详细文档和源码可供参考。

  • BSD TCP/IP Stack:BSD 操作系统(如 FreeBSD、OpenBSD)中的 TCP/IP 实现也是开源的,可以参考其源码来了解 TCP/IP 的实现细节。

  • IETF 提供了与 TCP/IP 相关的 RFC 文档,是最权威的标准和技术文档来源。
  • ISO 提供了一些与网络和通信相关的国际标准,尤其是在开放系统互联和安全技术方面。
  • 通过查阅 RFC 文档 和相关的 技术书籍,可以深入了解 TCP/IP 协议族的工作原理和实现细节。

Add-PrinterPort / Add-Printer PowerShell 完整拆解解构

适用系统:Windows 10 / Windows 11 / Windows Server
 
模块:PrintManagement.psd1(PrintManagement Module)
 
核心后台:打印后台处理程序 spoolsv.exe(Print Spooler)
 
关联组件:tcpip.sys、LPR 端口监视器、Win32 打印 API
两条命令分工边界
  1. Add-PrinterPort:创建打印机端口(TCP Raw、LPR、本地端口等通信载体)
  2. Add-Printer:绑定驱动、端口,注册逻辑打印机到系统打印后台

一、底层原理

1. 整体架构模型

Windows 打印体系分层:
plaintext
应用程序 → Winspool.drv(用户态打印API)
        ↓ IRP/进程通信
spoolsv.exe(打印后台服务,核心中枢)
        ↓ 加载各类端口监视器(DLL)
                ↓
        ├─ TCP/RAW端口监视器 win32spl.dll
        ├─ LPR端口监视器 lprmon.dll
        ├─ 本地端口监视器 localmon.dll
        ├─ USB端口监视器 usbmon.dll
        ↓
tcpip.sys / NDIS → 网络打印机
核心概念区分
  • PrinterPort(打印机端口):定义如何与物理打印设备通信(IP 地址、协议、端口号);
  • Printer(逻辑打印机):端口 + 打印驱动 + 名称 + 配置组合;一台物理打印机可对应多个逻辑打印机;同一个端口可被多台逻辑打印机复用。

2. Add-PrinterPort 底层原理

作用:在打印后台处理程序中注册端口配置,写入系统打印端口注册表,加载对应端口监视器驱动。
 
端口类型常见:
  1. Standard TCP/IP Port(RAW 9100,最通用网络打印机)
  2. LPR Port(RFC1179,依赖 Printing-LPR-Port-Monitor
  3. LocalPort(本地文件端口 C:\printjob.prn、共享端口 \\server\printer
  4. USB、WSD、Bluetooth 端口
创建 TCP 端口本质:
 
保存打印机 IP、协议类型(RAW/LPR)、端口号、SNMP 参数至注册表;spoolsv 后续发送作业时,依据端口配置调用对应监视器建立网络连接。

3. Add-Printer 底层原理

作用:向 spoolsv 注册逻辑打印机对象,绑定:打印机名称、驱动名称、已存在的 PrinterPort 名称、打印首选项、共享属性、安全 ACL。
前置硬性条件:目标端口必须预先存在(先 Add-PrinterPort,再 Add-Printer)。
 
打印作业流转:应用输出 → spoolsv → 根据打印机绑定端口 → 端口监视器 → 网络 / 本地设备。

二、依赖文件、注册表、系统服务

1. 核心二进制文件

  1. spoolsv.exe 打印后台处理程序(唯一核心服务进程)
  2. winspool.drv 用户态 Win32 打印 API(PowerShell Cmdlet 最终调用这套 API)
  3. win32spl.dll Standard TCP/IP 端口监视器
  4. lprmon.dll LPR 端口监视器(需要安装可选功能:LPR 端口监视器)
  5. localmon.dll 本地端口监视器
  6. PrintManagement PowerShell 模块
     
    C:\Windows\System32\WindowsPowerShell\v1.0\Modules\PrintManagement\

2. 关键服务

服务名:Spooler(Print Spooler)
  • 停止 Spooler:无法新增端口、新增打印机、提交打印任务;
  • 所有打印管理 Cmdlet 强依赖此服务。

3. 注册表持久化位置(端口 & 打印机配置)

打印机端口注册表

HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\[监视器名称]\Ports
 
示例:
 
HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\Standard TCP/IP Port\Ports\192.168.1.100
 
存储 IP、RAW 端口号、SNMP 开关等。

逻辑打印机注册表

HKLM\SYSTEM\CurrentControlSet\Control\Print\Printers\[PrinterName]
 
记录:绑定端口名、驱动名、默认设置、共享名称、安全描述符。

打印驱动存储

HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\
 
驱动文件缓存目录:C:\Windows\System32\spool\DRIVERS

4. 网络层依赖

网络打印机端口最终依靠:
 
ws2_32.dll → afd.sys → tcpip.sys → NDIS → 网卡
  • RAW 打印:TCP 9100
  • LPR 打印:TCP 515

5. 可选功能依赖(LPR 场景)

若创建 LPR 端口:必须预先安装 Windows 可选功能 Printing-LPR-Port-Monitor,否则 lprmon.dll 不存在,端口创建失败。

三、依赖关系梳理

执行调用链

plaintext
PowerShell Console
    ↓ 加载 PrintManagement 模块
Add-PrinterPort / Add-Printer Cmdlet
    ↓ 封装调用 Winspool.drv Win32 Print API
    ├─ Add-PrinterPort → OpenPrinterPort / AddPort API
    └─ Add-Printer → AddPrinter API
    ↓ RPC本地通信 → spoolsv.exe(Print Spooler)
    ↓ spoolsv更新打印注册表
    ↓ 加载对应端口监视器DLL(win32spl.dll / lprmon.dll)

强制依赖约束

  1. 执行顺序约束
     
    必须先创建端口 Add-PrinterPort,再执行 Add-Printer;
     
    Add-Printer 无法自动创建端口。
  2. 服务依赖
     
    Spooler 服务运行;服务禁用 → 所有命令报错。
  3. 权限依赖
     
    新增端口、新增打印机必须管理员权限;普通用户仅可连接已发布共享打印机。
  4. 驱动依赖
     
    Add-Printer 指定的驱动名称必须已经预安装在系统驱动库;否则创建打印机失败。
  5. 组件依赖区分
  • TCP RAW 端口:系统原生自带监视器,无需额外 FoD 组件;
  • LPR 端口:依赖可选功能 LPR 端口监视器。

上下游依赖总图

上游:应用打印、控制面板设备和打印机;
 
下游:端口监视器 → tcpip.sys 网络栈 / USB 总线驱动;
 
配套组件:LPD 打印服务(LPDSVC)、OpenSSH 不直接参与,但同属系统网络服务。

四、完整逻辑链路

链路 1:Add-PrinterPort 创建标准 TCP 端口(RAW 9100)

示例命令
powershell
Add-PrinterPort -Name "192.168.1.50" -PrinterHostAddress "192.168.1.50"
  1. Cmdlet 校验参数,调用 winspool.drv AddPort 函数;
  2. RPC 请求发送至 spoolsv.exe;
  3. spoolsv 加载 win32spl.dll(Standard TCP/IP Port 监视器);
  4. 在监视器注册表项下新建端口注册表键,写入 IP 地址、默认 RAW 端口 9100;
  5. 端口注册完成,可被打印机绑定;
  6. 无网络连接产生,仅注册配置,不会主动连通打印机

链路 2:Add-Printer 绑定端口生成逻辑打印机

powershell
Add-Printer -Name "Office-Printer" -DriverName "HP Universal Printing PCL 6" -PortName "192.168.1.50"
  1. Cmdlet 调用 Win32 AddPrinter API;
  2. spoolsv 校验两点:
    • 指定 PortName 是否已存在;
    • 指定 DriverName 是否在系统驱动库存在;
  3. 通过校验 → 在 HKLM\Control\Print\Printers 创建打印机项;
  4. 写入绑定端口、驱动、安全配置、默认打印参数;
  5. 系统控制面板、设置界面出现新打印机;
  6. 此时依然不会发起网络连接;首次打印作业触发时才建立 TCP 连接。

链路 3:打印作业下发完整链路(运行时)

  1. Word / 浏览器发起打印;
  2. GDI 渲染 → 生成打印 EMF/RAW 数据;
  3. 数据提交 spoolsv,生成后台缓冲文件(C:\Windows\System32\spool\PRINTERS);
  4. spoolsv 读取打印机绑定端口名称;
  5. 调用对应端口监视器(win32spl.dll);
  6. 监视器通过 ws2_32 发起 TCP 连接至打印机 IP:9100;
  7. tcpip.sys 完成数据包传输,发送打印数据流。

链路 4:典型故障链路

  1. Spooler 服务停止 → Add-PrinterPort/Add-Printer 直接失败;
  2. 端口名称拼写不一致 → Add-Printer 提示端口不存在;
  3. 驱动未预安装 → 创建打印机失败;
  4. 创建 LPR 端口,但未安装 LPR 端口监视器可选功能 → 端口类型不识别;
  5. 端口创建成功,但打印机断电 / 防火墙拦截 → 仅打印时报错,创建命令不会提示失败(创建阶段不连通设备);
  6. 注册表权限损坏 → spoolsv 无法写入端口配置。

五、配套链(配套命令、图形入口、运维、故障工具)

1. PrintManagement 配套 PowerShell 命令

powershell
# 查看现有端口
Get-PrinterPort
# 删除端口
Remove-PrinterPort

# 查看已注册逻辑打印机
Get-Printer
# 删除打印机
Remove-Printer

# 查看系统已安装打印驱动(前置检查必备)
Get-PrinterDriver
# 安装打印驱动包
Add-PrinterDriver

# 重启打印后台服务
Restart-Service Spooler

2. 图形界面对应入口

设置 → 蓝牙和其他设备 → 打印机和扫描仪 → 添加设备
 
底层等价调用同一套 Winspool API。

3. 配套可选打印组件(LPR/LPD 场景)

powershell
# LPR打印必须提前安装
Enable-WindowsOptionalFeature -Online -FeatureName Printing-LPR-Port-Monitor

4. 传统工具配套

printui.exe(打印 UI 工具)、rundll32 printui.dll,底层同样封装 winspool.drv;
 
lpq.exe / lpr.exe LPR 命令行测试工具。

5. 排错配套

  1. 事件查看器 → 应用程序日志,源 PrintSpooler;
  2. 抓包:Wireshark 观察 TCP9100/515 流量,区分「配置成功」与「通信可用」;
  3. 清理缓冲:停止 Spooler,删除 C:\Windows\System32\spool\PRINTERS 文件;
  4. 防火墙:放行出站 TCP9100;若启用 LPD 服务需放行入站 TCP515。

6. 安全配套视角

  • 管理员可通过脚本批量部署网络打印机(企业域环境标准运维方案);
  • 恶意程序若具备管理员权限,可新增打印机、劫持打印端口、篡改打印驱动;
  • 网络 RAW 打印协议无加密,敏感业务建议使用 IPPS/IPP 替代 RAW9100。

PowerShell 打印机管理完整配套链(Add-PrinterPort + Add-Printer 核心上下游全组件)

整体分层:网络 / 本地端口配置层 → 打印机驱动管理层 → 打印机端口绑定层 → 打印机实例部署层 → 打印队列 / 运维管控层 → 导出备份迁移配套,核心两个命令 Add-PrinterPort(端口)、Add-Printer(打印机)是中间绑定核心节点。

一、底层前置配套:驱动管理(打印机部署必备前置)

打印机必须先安装驱动,才能绑定端口创建打印机,配套 Cmdlet:
  1. Get-PrinterDriver
     
    查看系统已安装打印驱动,确认驱动名称、厂商、型号,用于Add-Printer引用
    powershell
    # 列出所有驱动,筛选HP型号
    Get-PrinterDriver | Where Name -match "HP LaserJet"
  2. Add-PrinterDriver
     
    安装本地 / 共享打印驱动(INF 包、Windows 更新驱动),部署打印机前置操作
    powershell
    # 从驱动目录安装打印驱动
    Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\hpljm404.inf"
  3. Remove-PrinterDriver
     
    卸载闲置打印驱动,清理系统冗余驱动包

二、端口层核心:Add-PrinterPort 配套全组件(管理 TCP / 本地 / USB 端口)

1. 端口创建核心:Add-PrinterPort

作用:创建 TCP 标准端口、本地 LPT/COM 端口、WSD 网络设备端口,给打印机提供通信通道
 
支持端口类型:TCP9100 网络打印端口、WSD 端口、本地并行 / 串口、IPP 云打印端口
 
示例(创建 TCP 网络打印机端口):
powershell
Add-PrinterPort -Name "IP_192.168.1.100" -PrinterHostAddress "192.168.1.100"

配套端口管理 Cmdlet

  1. Get-PrinterPort
     
    查询本机所有已创建打印端口,验证端口是否创建成功、查看 IP 地址
    powershell
    Get-PrinterPort | Select Name,PrinterHostPort,PortNumber
  2. Remove-PrinterPort
     
    删除闲置 / 失效打印端口(必须先删除绑定该端口的打印机,否则报错占用)
    powershell
    Remove-PrinterPort -Name "IP_192.168.1.100"
  3. Get-WSDDevice
     
    扫描局域网 WSD 无线打印机,自动提取设备地址,配合Add-PrinterPort创建 WSD 端口
  4. Add-PrinterPort 依赖底层组件:TCP/IP 打印服务 Spooler(打印后台处理程序)

三、绑定层核心:Add-Printer(端口 + 驱动绑定生成打印机实例)

核心作用

已存在的打印端口 + 已安装打印驱动 绑定,生成系统可见打印机,是端口、驱动的上层绑定入口。
 
标准完整部署流程示例(端口→驱动→打印机):
powershell
# 1. 创建TCP端口
Add-PrinterPort -Name "LAN_Printer_192.168.1.50" -PrinterHostAddress "192.168.1.50"
# 2. 绑定驱动+端口,创建打印机
Add-Printer -Name "车间HP激光打印机" -DriverName "HP LaserJet Pro M404" -PortName "LAN_Printer_192.168.1.50"

Add-Printer 配套管理 Cmdlet

  1. Get-Printer
     
    查看本机所有打印机,校验端口、驱动、在线状态
    powershell
    Get-Printer | Select Name,PortName,DriverName,Status
  2. Set-Printer
     
    修改已存在打印机配置:更换端口、共享开关、打印首选项、是否默认打印机
    powershell
    # 设置为默认打印机
    Set-Printer -Name "车间HP激光打印机" -Default $true
    # 更换绑定端口
    Set-Printer -Name "车间HP激光打印机" -PortName "LAN_Printer_192.168.1.51"
  3. Remove-Printer
     
    删除打印机实例,释放绑定端口,之后可删除对应 PrinterPort
    powershell
    Remove-Printer -Name "车间HP激光打印机"
  4. Rename-Printer
     
    重命名已部署打印机

四、共享 / 客户端远程配套(企业域批量打印部署)

  1. Set-PrinterShare
     
    将本地打印机设置为共享打印机,配置共享名,域客户端可远程连接
    powershell
    Set-Printer -Name "车间HP激光打印机" -ShareName "Shop_HP_Printer" -Shared $true
  2. Add-PrinterConnection
     
    客户端远程连接服务器共享打印机(无需本地创建端口,自动拉取服务端端口配置)
    powershell
    Add-PrinterConnection -Name "\\PrintServer01\Shop_HP_Printer"
  3. Get-PrinterServer
     
    读取打印服务器共享打印机列表,批量批量创建端口 + 打印机

五、打印队列、作业运维配套(打印机上层管控)

端口 + 打印机部署完成后,配套打印任务运维命令:
  1. Get-PrintJob:查看当前打印机所有待打印任务
  2. Remove-PrintJob:清除卡住、错误打印队列
  3. Restart-Service Spooler:重启打印后台服务,修复端口通信卡死、队列堵塞
  4. Get-PrinterConfiguration / Set-PrinterConfiguration:配置纸张、双面、黑白 / 彩色默认首选项

六、导出 / 迁移备份配套(批量终端标准化部署)

用于批量机房、办公终端一键复刻打印机端口 + 打印机配置:
  1. Export-Printer
     
    导出本机全部打印机、端口、驱动配置为 XML 备份文件
    powershell
    Export-Printer -Path "D:\print_backup.xml"
  2. Import-Printer
     
    在新终端导入备份 XML,自动执行:创建 PrinterPort 端口 → 安装驱动 → 创建 Add-Printer 打印机,全自动流水线部署
    powershell
    Import-Printer -Path "D:\print_backup.xml"

七、完整端到端配套执行链路(标准化企业部署流程)

plaintext
1. 检查/安装打印驱动 Add-PrinterDriver
        ↓
2. 创建网络打印端口 Add-PrinterPort
        ↓
3. 绑定端口+驱动生成打印机 Add-Printer
        ↓
4. 可选:共享打印机 Set-Printer -Shared
        ↓
5. 运维:查看/修改/删除 Get-Printer / Set-Printer / Remove-Printer
        ↓
6. 备份迁移:Export-Printer / Import-Printer 全链路复刻

八、底层系统服务依赖(整条配套链运行基础)

所有打印机 PowerShell 命令强依赖系统服务 Print Spooler(Spooler)
cmd
# 校验服务运行状态
sc query spooler
# 重启打印服务修复端口/打印机加载异常
net stop spooler && net start spooler
若 Spooler 服务停止,Add-PrinterPortAdd-Printer 全部执行失败。

一、PowerShell 查看已安装打印机(Get-Printer)

核心命令:Get-Printer,依赖打印后台服务 Spooler,需管理员 / 普通用户均可执行。

1. 基础查看(全部打印机完整信息)

powershell
# 列出本机所有本地+网络共享打印机
Get-Printer

2. 精简关键字段(常用运维视图)

只展示打印机名、绑定端口、驱动、在线状态、是否默认、是否共享:
powershell
Get-Printer | Select Name,PortName,DriverName,Status,Default,Shared,ShareName

3. 过滤筛选场景示例

① 只查看本地 TCP 网络打印机(带 IP 端口)

powershell
Get-Printer | Where PortName -match "^IP_"

② 筛选共享打印机

powershell
Get-Printer | Where Shared -eq $true

③ 查看默认打印机

powershell
Get-Printer | Where Default -eq $true

④ 按名称模糊匹配(查找 HP 打印机)

powershell
Get-Printer | Where Name -match "HP"

4. 导出打印机清单到 CSV 备份

powershell
Get-Printer | Select Name,PortName,DriverName,Status,Shared,ShareName | Export-Csv C:\print_list.csv -NoTypeInformation -Encoding UTF8

二、PowerShell 删除打印机(Remove-Printer)

基础语法

powershell
Remove-Printer -Name "打印机名称"

1. 单台打印机删除示例

powershell
# 删除名为「车间HP激光打印机」的设备
Remove-Printer -Name "车间HP激光打印机"

2. 批量删除匹配规则的打印机

删除所有 HP 打印机

powershell
Get-Printer | Where Name -match "HP" | Remove-Printer

删除所有共享打印机

powershell
Get-Printer | Where Shared -eq $true | Remove-Printer

3. 强制删除(跳过确认提示)

powershell
Get-Printer | Where Name -match "测试打印机" | Remove-Printer -Confirm:$false

重要配套约束

  1. 仅删除打印机实例,不会自动删除绑定的打印端口(PrinterPort)与驱动;如需清理端口,需额外执行 Remove-PrinterPort
  2. 共享打印机必须先关闭共享,否则部分系统删除会报错占用;
  3. 网络客户端共享连接打印机可直接删除,不影响打印服务器端设备。
完整清理流程(打印机 + 端口):
powershell
# 1. 获取目标打印机端口
$port = Get-Printer -Name "车间HP激光打印机" | Select -ExpandProperty PortName
# 2. 删除打印机
Remove-Printer -Name "车间HP激光打印机" -Confirm:$false
# 3. 删除闲置端口
Remove-PrinterPort -Name $port -Confirm:$false

三、PowerShell 配置打印机共享设置(Set-Printer)

核心参数:-Shared(开启 / 关闭共享)、-ShareName(共享访问名),使用 Set-Printer 修改现有打印机共享属性。

1. 开启打印机共享 + 设置共享名

powershell
# 将「车间HP激光打印机」开启共享,共享名 Shop_HP_Printer
Set-Printer -Name "车间HP激光打印机" -Shared $true -ShareName "Shop_HP_Printer"

2. 关闭打印机共享

powershell
Set-Printer -Name "车间HP激光打印机" -Shared $false

3. 修改已有打印机共享名称

powershell
Set-Printer -Name "车间HP激光打印机" -ShareName "Workshop_HP01"

4. 批量批量开启所有本地打印机共享

powershell
Get-Printer | Where PortName -match "^IP_" | ForEach-Object {
    Set-Printer -Name $_.Name -Shared $true -ShareName ("Share_"+$_.Name)
}

配套查看验证命令

修改后执行,确认共享状态生效:
powershell
Get-Printer -Name "车间HP激光打印机" | Select Name,Shared,ShareName

前置依赖

系统必须开启「文件和打印机共享」防火墙规则,否则局域网客户端无法连接共享打印机;可通过以下命令放行:
powershell
Set-NetFirewallRule -Name "SPOOLSS-In-TCP" -Enabled True

一、PowerShell 完整安装网络打印机标准流程

安装打印机分三步:安装驱动 → 创建打印端口 → 绑定端口驱动生成打印机,核心命令 Add-PrinterDriverAdd-PrinterPortAdd-Printer

1. 前置:安装打印驱动

powershell
# 查看本机已有驱动(确认驱动名称)
Get-PrinterDriver

# 从本地INF文件安装驱动
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\hpljm404.inf"

2. 创建 TCP 网络打印端口

powershell
# 创建IP端口,端口名自定义,填入打印机IP
Add-PrinterPort -Name "IP_192.168.1.200" -PrinterHostAddress "192.168.1.200"

3. 新建打印机(绑定端口与驱动)

powershell
Add-Printer `
-Name "办公HP激光打印机" `
-DriverName "HP LaserJet M404 PCL 6" `
-PortName "IP_192.168.1.200"

4. 一键完整自动化脚本(批量部署模板)

powershell
# 变量定义
$printerName = "车间打印机"
$driverName = "HP LaserJet M404 PCL 6"
$portName = "IP_192.168.1.50"
$printerIP = "192.168.1.50"

# 1. 创建端口
Add-PrinterPort -Name $portName -PrinterHostAddress $printerIP
# 2. 生成打印机
Add-Printer -Name $printerName -DriverName $driverName -PortName $portName
# 可选:安装后直接设为默认打印机
Set-Printer -Name $printerName -Default $true

5. 客户端连接共享打印机(无需手动创建端口)

powershell
# 连接打印服务器共享打印机
Add-PrinterConnection -Name "\\PrintSrv01\ShopPrinter"

二、PowerShell 删除打印机 Remove-Printer

基础单台删除

powershell
# 删除指定名称打印机,无确认弹窗
Remove-Printer -Name "办公HP激光打印机" -Confirm:$false

批量删除场景

powershell
# 删除所有HP品牌打印机
Get-Printer | Where Name -match "HP" | Remove-Printer -Confirm:$false

# 删除所有网络TCP打印机
Get-Printer | Where PortName -match "^IP_" | Remove-Printer -Confirm:$false

完整清理(打印机 + 闲置端口)

删除打印机后同步删除不再使用的打印端口:
powershell
$targetPrinter = "办公HP激光打印机"
$port = Get-Printer -Name $targetPrinter | Select -ExpandProperty PortName
Remove-Printer -Name $targetPrinter -Confirm:$false
Remove-PrinterPort -Name $port -Confirm:$false

注意事项

  1. 仅删除打印机实例,不会自动卸载打印驱动;
  2. 共享打印机需先关闭共享再删除,避免占用报错;
  3. 共享客户端连接打印机可直接删除,不影响服务器端设备。

三、PowerShell 设置默认打印机 Set-Printer

1. 单台指定打印机设为默认

powershell
Set-Printer -Name "办公HP激光打印机" -Default $true

2. 取消默认打印机(无单独取消参数,直接指定另一台即可)

powershell
# 将其他设备设为默认,自动取消原有默认
Set-Printer -Name "黑白复印机" -Default $true

3. 批量逻辑:将匹配名称的打印机设为默认

powershell
# 把名称包含"HP"的第一台打印机设为默认
$hpPrinter = Get-Printer | Where Name -match "HP" | Select -First 1
if ($hpPrinter) {
    Set-Printer -Name $hpPrinter.Name -Default $true
}

4. 验证默认打印机是否生效

powershell
Get-Printer | Where Default -eq $true | Select Name,Default

 

一、PowerShell 查看已安装打印机驱动(Get-PrinterDriver)

核心命令:Get-PrinterDriver,用于查询本机所有打印驱动,安装打印机前必用,确认驱动名称。

1. 基础全量查看

powershell
# 列出系统全部打印驱动完整信息
Get-PrinterDriver

2. 精简核心字段(厂商、驱动名、版本、架构)

powershell
Get-PrinterDriver | Select Name,Manufacturer,DriverVersion,Architecture

3. 过滤筛选场景

筛选指定品牌驱动(HP / 佳能)

powershell
# 只显示HP驱动
Get-PrinterDriver | Where Name -match "HP"
# 只显示佳能驱动
Get-PrinterDriver | Where Manufacturer -match "Canon"

筛选 64 位驱动

powershell
Get-PrinterDriver | Where Architecture -eq "x64"

4. 导出驱动清单备份

powershell
Get-PrinterDriver | Select Name,Manufacturer,DriverVersion,Architecture | Export-Csv C:\driver_list.csv -NoTypeInformation -Encoding UTF8

二、PowerShell 删除打印机(Remove-Printer)

1. 单台直接删除(无确认弹窗)

powershell
Remove-Printer -Name "办公HP激光打印机" -Confirm:$false

2. 批量删除匹配条件打印机

删除所有 HP 打印机

powershell
Get-Printer | Where Name -match "HP" | Remove-Printer -Confirm:$false

删除所有 TCP 网络打印机

powershell
Get-Printer | Where PortName -match "^IP_" | Remove-Printer -Confirm:$false

3. 完整清理流程(打印机 + 闲置端口)

删除打印机后同步清理不再使用的打印端口:
powershell
$printerName = "办公HP激光打印机"
# 获取打印机绑定端口
$port = Get-Printer -Name $printerName | Select -ExpandProperty PortName
# 删除打印机
Remove-Printer -Name $printerName -Confirm:$false
# 删除端口
Remove-PrinterPort -Name $port -Confirm:$false

关键注意点

  1. Remove-Printer 仅删除打印机实例,不会自动卸载打印驱动;卸载驱动需单独执行 Remove-PrinterDriver
  2. 共享打印机建议先关闭共享再删除,避免端口占用报错;
  3. 客户端网络共享打印机可直接删除,不影响打印服务器端设备。

三、PowerShell 配置打印机默认设置(Set-Printer + Set-PrinterConfiguration)

分为两大模块:打印机基础默认属性(是否默认、共享、端口)、打印首选项默认设置(纸张、双面、黑白 / 彩色、分辨率)。

(一)基础全局默认属性(Set-Printer)

1. 将打印机设为系统默认打印机

powershell
Set-Printer -Name "办公HP激光打印机" -Default $true

2. 修改打印机绑定端口

powershell
Set-Printer -Name "办公HP激光打印机" -PortName "IP_192.168.1.60"

3. 开启 / 关闭打印机共享、修改共享名

powershell
# 开启共享,自定义共享名称
Set-Printer -Name "办公HP激光打印机" -Shared $true -ShareName "Office_HP01"
# 关闭共享
Set-Printer -Name "办公HP激光打印机" -Shared $false

(二)打印首选项默认配置(Set-PrinterConfiguration)

控制纸张大小、双面打印、色彩模式、默认份数等打印默认参数。

1. 查看当前默认首选项

powershell
Get-PrinterConfiguration -PrinterName "办公HP激光打印机"

2. 配置默认 A4 纸张、双面打印、黑白模式

powershell
Set-PrinterConfiguration `
-PrinterName "办公HP激光打印机" `
-PaperSize A4 `
-Duplex TwoSidedLongEdge `
-Color $false `
-Copies 1

常用参数说明

参数 作用 可选值
-PaperSize 默认纸张 A4、Letter、A3、B5
-Duplex 双面打印 OneSided(单面)、TwoSidedLongEdge(长边翻转)、TwoSidedShortEdge(短边翻转)
-Color 色彩模式 $true 彩色 / $false 黑白
-Copies 默认打印份数 数字
-Resolution 打印分辨率 300、600、1200

(三)批量统一配置所有打印机默认双面打印

powershell
Get-Printer | ForEach-Object {
    Set-PrinterConfiguration -PrinterName $_.Name -Duplex TwoSidedLongEdge
}

(四)验证配置是否生效

powershell
# 查看基础属性
Get-Printer -Name "办公HP激光打印机" | Select Name,Default,Shared,ShareName
# 查看打印首选项
Get-PrinterConfiguration -PrinterName "办公HP激光打印机"

一、PowerShell 安装打印机驱动(Add-PrinterDriver)

核心命令:Add-PrinterDriver,必须管理员权限运行,依赖打印后台服务Spooler

1. 本地 INF 驱动包安装(离线驱动文件)

powershell
# 参数说明:-Name 驱动完整名称;-InfPath 驱动inf文件路径
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\PrintDrivers\hpljm404.inf"

2. 查看系统已有驱动(获取准确驱动名)

powershell
Get-PrinterDriver | Select Name,Manufacturer

3. 批量批量加载文件夹内全部驱动

powershell
# 遍历驱动目录所有inf,批量安装
Get-ChildItem D:\PrintDrivers -Recurse -Filter *.inf | ForEach-Object {
    Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath $_.FullName
}

4. 在线 Windows 更新驱动安装

部分通用驱动可直接通过系统更新安装,无需本地 INF:
powershell
Add-PrinterDriver -Name "HP Universal Printing PCL 6"

配套卸载驱动命令

powershell
Remove-PrinterDriver -Name "HP LaserJet M404 PCL 6"

二、PowerShell 创建打印端口(Add-PrinterPort)

支持 TCP 网络端口、WSD 无线端口、本地 LPT/COM 端口,最常用TCP 9100 网络打印端口

1. 创建 TCP 网络打印端口(主流局域网打印机)

powershell
# -Name 自定义端口标识;-PrinterHostAddress 打印机静态IP
Add-PrinterPort -Name "IP_192.168.1.105" -PrinterHostAddress "192.168.1.105"

2. 创建 WSD 无线打印机端口(WiFi 网络打印机)

powershell
# 先扫描局域网WSD设备获取设备地址
Get-WSDDevice
# 基于WSD地址创建端口
Add-PrinterPort -Name "WSD_HP01" -WSDAddress "http://192.168.1.105/wsd/print"

3. 查看本机全部已创建端口(校验是否创建成功)

powershell
Get-PrinterPort | Select Name,PrinterHostAddress,PortNumber

4. 删除闲置端口

powershell
Remove-PrinterPort -Name "IP_192.168.1.105" -Confirm:$false

三、PowerShell 删除打印机(Remove-Printer)

1. 删除单台指定打印机

powershell
# -Confirm:$false 跳过确认弹窗,静默删除
Remove-Printer -Name "车间HP激光打印机" -Confirm:$false

2. 批量条件删除

删除所有 HP 品牌打印机

powershell
Get-Printer | Where Name -match "HP" | Remove-Printer -Confirm:$false

删除所有 TCP 网络打印机

powershell
Get-Printer | Where PortName -match "^IP_" | Remove-Printer -Confirm:$false

3. 完整清理流程(打印机 + 绑定端口)

仅删除打印机会残留端口,完整清理脚本:
powershell
$targetPrinter = "车间HP激光打印机"
# 获取打印机绑定端口名称
$bindPort = Get-Printer -Name $targetPrinter | Select -ExpandProperty PortName
# 删除打印机
Remove-Printer -Name $targetPrinter -Confirm:$false
# 删除闲置端口
Remove-PrinterPort -Name $bindPort -Confirm:$false

关键注意事项

  1. Remove-Printer 只删除打印机实例,不会自动卸载打印驱动
  2. 共享打印机建议先关闭共享再执行删除,避免端口占用报错;
  3. 客户端连接的共享网络打印机可直接删除,不影响打印服务器设备。

一、PowerShell 查看打印机驱动版本信息

核心命令:Get-PrinterDriver,内置字段 DriverVersionManufacturerNameArchitecture 可直接读取版本。

1. 基础查看(完整信息,含版本)

powershell
# 列出所有驱动,包含版本、厂商、驱动名、系统架构
Get-PrinterDriver | Select Name,Manufacturer,DriverVersion,Architecture

2. 筛选指定品牌驱动版本(例:HP)

powershell
Get-PrinterDriver | Where Name -match "HP" | Select Name,DriverVersion

3. 导出全部驱动版本清单到 CSV 备份

powershell
Get-PrinterDriver | Select Name,Manufacturer,DriverVersion,Architecture | Export-Csv C:\PrintDriver_Version_List.csv -NoTypeInformation -Encoding UTF8

4. 结合打印机实例查看当前使用驱动版本

先获取打印机绑定的驱动名称,再匹配对应版本:
powershell
# 查看打印机+对应驱动名
Get-Printer | Select Name,DriverName
# 单独查询某台打印机驱动版本
$drvName = (Get-Printer -Name "办公HP打印机").DriverName
Get-PrinterDriver -Name $drvName | Select Name,DriverVersion

二、PowerShell 卸载打印机驱动 Remove-PrinterDriver

前置约束

  1. 必须先删除所有使用该驱动的打印机,否则驱动占用无法卸载;
  2. 需要管理员权限;
  3. 仅卸载驱动文件包,不会删除打印端口。

1. 单驱动卸载

powershell
# 填入完整驱动名称
Remove-PrinterDriver -Name "HP LaserJet M404 PCL 6" -Confirm:$false

2. 批量卸载匹配名称的驱动

powershell
# 卸载所有HP相关驱动
Get-PrinterDriver | Where Name -match "HP" | Remove-PrinterDriver -Confirm:$false

完整清理标准流程(打印机→端口→驱动)

powershell
$printerName = "办公HP打印机"
# 1. 获取绑定端口与驱动名
$info = Get-Printer -Name $printerName | Select PortName,DriverName
# 2. 删除打印机
Remove-Printer -Name $printerName -Confirm:$false
# 3. 删除闲置端口
Remove-PrinterPort -Name $info.PortName -Confirm:$false
# 4. 卸载驱动
Remove-PrinterDriver -Name $info.DriverName -Confirm:$false

三、PowerShell 配置打印机端口(全生命周期:创建 / 查看 / 修改 / 删除)

核心 Cmdlet:Add-PrinterPort(创建)、Get-PrinterPort(查看)、Remove-PrinterPort(删除),无单独修改端口参数,修改 IP 需重建端口并更换打印机绑定。

1. 创建 TCP 网络打印端口(最常用,局域网打印机)

powershell
# -Name:自定义端口标识;-PrinterHostAddress:打印机静态IP
Add-PrinterPort -Name "IP_192.168.1.100" -PrinterHostAddress "192.168.1.100"

2. 创建 WSD 无线 WiFi 打印机端口

powershell
# 先扫描局域网WSD设备
Get-WSDDevice
# 创建WSD端口
Add-PrinterPort -Name "WSD_Canon01" -WSDAddress "http://192.168.1.100/wsd/print"

3. 查看本机全部端口(校验 IP、名称)

powershell
Get-PrinterPort | Select Name,PrinterHostAddress,PortNumber

4. 修改打印机绑定的端口(更换 IP 操作)

  1. 新建目标 IP 端口;
  2. 使用 Set-Printer 修改打印机绑定端口:
powershell
# 新建新IP端口
Add-PrinterPort -Name "IP_192.168.1.101" -PrinterHostAddress "192.168.1.101"
# 将打印机切换至新端口
Set-Printer -Name "办公HP打印机" -PortName "IP_192.168.1.101"
# 删除旧闲置端口
Remove-PrinterPort -Name "IP_192.168.1.100" -Confirm:$false

5. 删除闲置端口

powershell
Remove-PrinterPort -Name "IP_192.168.1.100" -Confirm:$false

6. 完整部署链路(端口 + 驱动 + 打印机)

powershell
# 1. 安装驱动
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\hp.inf"
# 2. 创建打印端口
Add-PrinterPort -Name "IP_192.168.1.100" -PrinterHostAddress "192.168.1.100"
# 3. 绑定驱动端口生成打印机
Add-Printer -Name "办公HP打印机" -DriverName "HP LaserJet M404 PCL 6" -PortName "IP_192.168.1.100"

一、PowerShell 查看打印机名称

核心命令 Get-Printer,Name 字段即为打印机显示名称。

1. 仅输出所有打印机名称(最简)

powershell
 
 
 
Get-Printer | Select -ExpandProperty Name
 

2. 查看名称 + 绑定端口 + 驱动对照

powershell
 
 
 
Get-Printer | Select Name,PortName,DriverName
 

3. 模糊匹配查找指定打印机名称

powershell
 
 
 
# 查找名称包含 HP 的打印机
Get-Printer | Where Name -match "HP" | Select Name
# 精确匹配单台打印机
Get-Printer -Name "车间激光打印机" | Select Name
 

4. 获取默认打印机名称

powershell
 
 
 
Get-Printer | Where Default -eq $true | Select -ExpandProperty Name
 

二、筛选指定架构的打印机驱动版本

驱动架构字段:Architecture,可选值 x64x86ARM64,命令基于 Get-PrinterDriver

1. 只筛选 64 位 (x64) 驱动,展示名称、版本、架构

powershell
 
 
 
Get-PrinterDriver | Where Architecture -eq "x64" | Select Name,DriverVersion,Architecture
 

2. 筛选 32 位 (x86) 驱动

powershell
 
 
 
Get-PrinterDriver | Where Architecture -eq "x86" | Select Name,DriverVersion,Manufacturer
 

3. 筛选 ARM64 架构驱动(Surface/ARM 笔记本)

powershell
 
 
 
Get-PrinterDriver | Where Architecture -eq "ARM64"
 

4. 多条件组合:x64 + HP 厂商驱动

powershell
 
 
 
Get-PrinterDriver | Where { $_.Architecture -eq "x64" -and $_.Manufacturer -match "HP" } | Select Name,DriverVersion
 

三、将打印机驱动版本信息导出为各类格式

前置基础对象

powershell
 
 
 
# 基础驱动数据集
$driverData = Get-PrinterDriver | Select Name,Manufacturer,DriverVersion,Architecture
 

1. 导出 CSV(Excel 可直接打开,运维最常用)

powershell
 
 
 
$driverData | Export-Csv C:\PrintDriver_List.csv -NoTypeInformation -Encoding UTF8
 

2. 导出纯文本 TXT

powershell
 
 
 
$driverData | Out-File C:\PrintDriver_List.txt -Encoding UTF8
 

3. 导出 JSON(程序读取、跨设备迁移)

powershell
 
 
 
$driverData | ConvertTo-Json | Out-File C:\PrintDriver_List.json -Encoding UTF8
 

4. 导出 XML

powershell
 
 
 
$driverData | Export-Clixml C:\PrintDriver_List.xml
 

5. 复制结果到剪贴板(无需保存文件,直接粘贴文档)

powershell
 
 
 
$driverData | Clip
 

6. 导出 HTML 可视化报表

powershell
$driverData | ConvertTo-Html -Title "打印机驱动清单" | Out-File C:\DriverReport.html

一、筛选指定架构的打印机驱动版本

驱动架构字段 Architecture 支持值:x64x86ARM64,核心命令 Get-PrinterDriver

1. 筛选 64 位 x64 驱动(办公电脑主流)

powershell
 
 
 
Get-PrinterDriver | Where Architecture -eq "x64" | Select Name,Manufacturer,DriverVersion,Architecture
 

2. 筛选 32 位 x86 兼容驱动

powershell
 
 
 
Get-PrinterDriver | Where Architecture -eq "x86" | Select Name,DriverVersion
 

3. 筛选 ARM64(Surface、ARM 笔记本)

powershell
 
 
 
Get-PrinterDriver | Where Architecture -eq "ARM64"
 

4. 多条件组合:x64 + 厂商过滤

powershell
 
 
 
# 只查看HP品牌64位驱动
Get-PrinterDriver | Where { $_.Architecture -eq "x64" -and $_.Manufacturer -match "HP" }
 

二、安装指定架构的打印机驱动(Add-PrinterDriver)

1. 基础安装(自动匹配当前系统架构)

powershell
 
 
 
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\hpljm404.inf"
 

2. 手动指定架构安装(同时安装 x86/x64 双架构)

使用 -Architecture 参数强制指定架构,适用于打印服务器安装多架构驱动:
powershell
 
 
 
# 安装64位驱动
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\hpljm404.inf" -Architecture x64
# 额外安装32位兼容驱动
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\x86\hpljm404.inf" -Architecture x86
 

3. 批量安装文件夹内多架构驱动

powershell
 
 
 
Get-ChildItem D:\PrintDrivers -Recurse -Filter *.inf | ForEach-Object {
    Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath $_.FullName -Architecture x64
}
 

补充:查看已安装驱动架构校验

powershell
 
 
 
Get-PrinterDriver | Select Name,Architecture
 

三、查看打印机驱动完整详细信息

1. 输出驱动全部原生属性(完整详情)

powershell
 
 
 
# 单驱动完整详情
Get-PrinterDriver -Name "HP LaserJet M404 PCL 6" | Format-List *
# 全部驱动完整详情
Get-PrinterDriver | Format-List *
 

2. 自定义关键详细字段视图(运维常用)

包含厂商、版本、架构、驱动文件路径、inf 路径:
powershell
 
 
 
Get-PrinterDriver | Select `
Name,
Manufacturer,
DriverVersion,
Architecture,
DriverPath,
InfPath,
ConfigFile
 

3. 结合打印机查看当前使用驱动完整详情

powershell
 
 
 
# 获取打印机绑定驱动名称
$drv = (Get-Printer -Name "办公HP打印机").DriverName
# 输出该驱动完整详情
Get-PrinterDriver -Name $drv | Format-List *
 

关键字段说明

表格
 
 
 
字段 含义
Name 驱动显示名称
Manufacturer 驱动厂商
DriverVersion 驱动版本号
Architecture 系统架构
DriverPath 系统加载的驱动 dll 路径
InfPath 原始安装 INF 文件路径
ConfigFile 打印配置文件路径

 

一、PowerShell 安装打印机驱动(Add-PrinterDriver)

1. 基础离线安装(本地 INF 驱动文件)

powershell
 
 
 
# 先查看本机已有驱动,确认目标驱动完整名称
Get-PrinterDriver | Select Name,Manufacturer

# 安装单架构驱动(自动匹配系统当前架构)
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\PrintDrivers\hpljm404.inf"
 

2. 指定架构安装(打印服务器多架构兼容)

-Architecture 手动指定 x64/x86/ARM64,同时安装 32/64 位驱动供客户端使用:
powershell
 
 
 
# 安装64位驱动
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\x64\hpljm404.inf" -Architecture x64
# 额外安装32位兼容驱动
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\x86\hpljm404.inf" -Architecture x86
 

3. 批量批量加载文件夹内全部 INF 驱动

powershell
 
 
 
Get-ChildItem D:\PrintDrivers -Recurse -Filter *.inf | ForEach-Object {
    Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath $_.FullName -Architecture x64
}
 

4. 在线通用驱动(无需本地 INF)

powershell
 
 
 
Add-PrinterDriver -Name "HP Universal Printing PCL 6"
 

二、PowerShell 查看打印机运行状态

核心字段 Status,命令 Get-Printer,可直观查看就绪、错误、离线、卡纸等状态。

1. 最简查看:打印机名 + 状态

powershell
 
 
 
Get-Printer | Select Name,Status
 

2. 完整运维视图(名称、状态、端口、驱动、默认、共享)

powershell
 
 
 
Get-Printer | Select Name,Status,PortName,DriverName,Default,Shared
 

3. 筛选异常故障打印机(非就绪设备)

powershell
 
 
 
Get-Printer | Where Status -ne "Ready" | Select Name,Status
 

4. 查看单台指定打印机详细状态

powershell
 
 
 
Get-Printer -Name "办公HP激光打印机" | Format-List Name,Status,PortName,DriverName
 

Status 常见状态值说明

  • Ready:正常就绪可打印
  • Offline:打印机离线、网络断开
  • Error:通用故障(卡纸、缺纸、缺墨、端口故障)
  • Printing:正在执行打印任务
  • Paused:打印队列已暂停

三、PowerShell 删除打印机 Remove-Printer

1. 单台静默删除(无确认弹窗)

powershell
 
 
 
Remove-Printer -Name "办公HP激光打印机" -Confirm:$false
 

2. 批量条件删除

删除所有 HP 品牌打印机

powershell
 
 
 
Get-Printer | Where Name -match "HP" | Remove-Printer -Confirm:$false
 

删除所有 TCP 网络打印机(端口名以 IP_开头)

powershell
 
 
 
Get-Printer | Where PortName -match "^IP_" | Remove-Printer -Confirm:$false
 

3. 完整清理流程(打印机 + 闲置端口)

仅删除打印机会残留端口,完整清理脚本:
powershell
 
 
 
$printerName = "办公HP激光打印机"
# 获取绑定端口
$bindPort = Get-Printer -Name $printerName | Select -ExpandProperty PortName
# 删除打印机
Remove-Printer -Name $printerName -Confirm:$false
# 删除不再使用的打印端口
Remove-PrinterPort -Name $bindPort -Confirm:$false
 

关键注意点

  1. Remove-Printer 仅删除打印机实例,不会卸载打印驱动;卸载驱动需单独执行 Remove-PrinterDriver
  2. 共享打印机建议先关闭共享再删除,避免端口占用报错;
  3. 客户端连接的共享网络打印机可直接删除,不影响打印服务器端设备。

一、PowerShell 查看打印机驱动详细信息

核心命令:Get-PrinterDriver

1. 单款驱动完整全量属性

powershell
 
 
 
Get-PrinterDriver -Name "HP LaserJet M404 PCL 6" | Format-List *
 

2. 所有驱动精简关键字段(运维清单视图)

powershell
 
 
 
Get-PrinterDriver | Select Name,Manufacturer,DriverVersion,Architecture,InfPath,DriverPath,ConfigFile
 

3. 结合已安装打印机反向查看当前使用驱动详情

powershell
 
 
 
# 获取打印机绑定驱动名称
$drvName = (Get-Printer -Name "办公激光打印机").DriverName
# 输出完整驱动详情
Get-PrinterDriver -Name $drvName | Format-List *
 

关键字段释义

  • Name:驱动完整显示名称(安装时必须完全匹配)
  • Manufacturer:硬件厂商
  • DriverVersion:驱动版本号
  • Architecture:系统架构 x64/x86/ARM64
  • InfPath:原始安装 INF 文件路径
  • DriverPath:系统加载的驱动 dll 文件路径

二、PowerShell 添加(新建)打印机完整流程

前置三步:安装驱动 → 创建打印端口 → 绑定生成打印机

1. 安装打印驱动

powershell
 
 
 
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\hpljm404.inf"
 

2. 创建 TCP 网络打印端口(局域网打印机)

powershell
 
 
 
Add-PrinterPort -Name "IP_192.168.1.100" -PrinterHostAddress "192.168.1.100"
 

3. Add-Printer 新建打印机(核心添加命令)

powershell
 
 
 
Add-Printer `
-Name "车间HP激光打印机" `
-DriverName "HP LaserJet M404 PCL 6" `
-PortName "IP_192.168.1.100"
 

可选附加参数

  • -Default $true:创建后直接设为系统默认打印机
  • -Shared $true -ShareName "Shop_HP":创建并开启共享

客户端连接共享打印机(无需创建本地端口)

powershell
 
 
 
Add-PrinterConnection -Name "\\PrintServer01\Shop_HP"
 

三、安装驱动提示「找不到驱动程序包」完整解决办法

报错根本原因:-Name 驱动名称与 INF 内部定义名称不匹配、INF 路径错误、架构不匹配、驱动包损坏、权限不足。

1. 核对 INF 内真实驱动名称(最常见故障)

  1. 右键 INF 文件 → 打开,查找 DriverName / Model 段内完整名称;
  2. 使用 Get-PrinterDriver 查看系统已存在驱动名称作为参照;
  3. 命令中 -Name 必须和 INF 内部名称完全一致,不能简写。
     
    错误示例:INF 内是HP LaserJet M404 PCL 6,简写HP M404会报错。

2. 校验 InfPath 路径正确性

  1. 路径不能包含中文空格、特殊符号,路径用绝对路径;
  2. 确认路径指向打印机对应架构 INF(x64 系统不能直接用 x86 INF);
powershell
 
 
 
# 校验文件是否存在
Test-Path "D:\Drivers\hpljm404.inf"
 
返回False代表路径错误 / 文件缺失。

3. 指定匹配架构安装

64 位系统默认读取 x64 驱动,INF 只有 32 位驱动时必须手动指定-Architecture x86
powershell
 
 
 
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath "D:\Drivers\x86\hpljm404.inf" -Architecture x86
 

4. 权限与系统服务修复

  1. PowerShell 右键「以管理员身份运行」,普通用户无驱动安装权限;
  2. 打印后台服务必须正常运行:
cmd
 
 
 
sc query spooler
net stop spooler && net start spooler
 

5. 驱动包修复

  1. 重新官网下载完整驱动安装包,解压后再读取 INF;压缩包未完整解压会缺失依赖 dll;
  2. 通用打印驱动备选方案,无需本地 INF:
powershell
 
 
 
Add-PrinterDriver -Name "HP Universal Printing PCL 6"
 

6. 分步排查脚本

powershell
 
 
 
#1 校验文件存在
$inf = "D:\Drivers\hpljm404.inf"
if(-not (Test-Path $inf)){Write-Host "INF文件不存在"}
#2 管理员校验
#3 指定架构重试安装
Add-PrinterDriver -Name "HP LaserJet M404 PCL 6" -InfPath $inf -Architecture x64

 


在 PowerShell 中,Add-PrinterPortAdd-Printer 命令用于管理打印机的端口和打印机本身。以下是这两个命令按功能分类的表格,帮助理解它们的作用和使用方式:

PowerShell 命令功能分类表:Add-PrinterPort 和 Add-Printer

命令 功能描述 参数 示例
Add-PrinterPort 用于添加新的打印机端口。这个命令可以用来创建一个新的打印机端口,通常用于网络打印机或本地打印机连接。 -Name(端口名称) -PrinterHostAddress(打印机主机地址) -PortType(端口类型) Add-PrinterPort -Name "IP_192.168.1.100" -PrinterHostAddress "192.168.1.100" -PortType "StandardTCPIPPort"
Add-Printer 用于添加新的打印机。可以通过指定打印机名称、端口以及打印机驱动程序来添加新的打印机设备。 -Name(打印机名称) -PortName(打印机端口) -DriverName(打印机驱动) Add-Printer -Name "HP LaserJet Pro" -PortName "IP_192.168.1.100" -DriverName "HP Universal Printing PCL 6"

详细功能说明

1. Add-PrinterPort

Add-PrinterPort 命令用于创建新的打印机端口。这对于配置打印机的网络连接非常重要,尤其是当你需要为网络打印机添加一个 TCP/IP 端口时。创建端口后,可以将其分配给特定的打印机。

  • 参数说明

    • -Name: 指定打印机端口的名称。
    • -PrinterHostAddress: 对于网络打印机,指定打印机的 IP 地址。
    • -PortType: 设置端口类型,通常是 StandardTCPIPPort 或其他类型的端口(例如串口、并口等)。
  • 示例

    powershellCopy Code
    Add-PrinterPort -Name "IP_192.168.1.100" -PrinterHostAddress "192.168.1.100" -PortType "StandardTCPIPPort"

    这个命令会创建一个名为 IP_192.168.1.100 的端口,并将其指向 IP 地址为 192.168.1.100 的打印机。

2. Add-Printer

Add-Printer 命令用于添加新打印机。通过指定打印机名称、端口和驱动程序,用户可以在计算机上安装新的打印机。这个命令通常在设置新打印机时使用。

  • 参数说明

    • -Name: 指定打印机的名称。
    • -PortName: 指定打印机将要使用的端口。通常这个端口是通过 Add-PrinterPort 命令先前创建的。
    • -DriverName: 指定打印机驱动程序的名称,确保打印机能够正常工作。
  • 示例

    powershellCopy Code
    Add-Printer -Name "HP LaserJet Pro" -PortName "IP_192.168.1.100" -DriverName "HP Universal Printing PCL 6"

    这个命令将名为 HP LaserJet Pro 的打印机添加到计算机,并将其连接到 IP 地址为 192.168.1.100 的打印机端口,使用 HP Universal Printing PCL 6 驱动程序。


 

命令 功能 用法
Add-PrinterPort 添加新的打印机端口 用于配置打印机连接的端口,通常适用于网络打印机。
Add-Printer 添加新的打印机 用于安装打印机,并将其连接到已有的端口,通常需要指定打印机驱动。

这两个命令通常是配合使用的:首先使用 Add-PrinterPort 创建一个新的打印机端口,然后使用 Add-Printer 将打印机连接到该端口。


PowerShell 中 Add-PrinterPortAdd-Printer 命令的区别对比表格:

特性 Add-PrinterPort Add-Printer
命令作用 添加新的打印机端口,用于定义打印机的连接方式(如网络端口、串口等)。 添加新的打印机,允许指定打印机的名称、端口、驱动程序等。
主要用途 配置打印机连接端口(例如,设置网络打印机的 IP 地址或其他连接类型)。 将新的打印机设备添加到系统,绑定打印机端口并安装驱动程序。
所需参数 -Name(端口名称) -PrinterHostAddress(打印机主机地址) -PortType(端口类型) -Name(打印机名称) -PortName(打印机端口名称) -DriverName(打印机驱动程序)
示例 Add-PrinterPort -Name "IP_192.168.1.100" -PrinterHostAddress "192.168.1.100" -PortType "StandardTCPIPPort" Add-Printer -Name "HP LaserJet Pro" -PortName "IP_192.168.1.100" -DriverName "HP Universal Printing PCL 6"
用途场景 用于设置新的打印机端口,特别是在需要网络打印机或特定连接类型时使用。 用于安装打印机,并绑定到已创建的打印机端口。
支持的端口类型 主要支持各种端口类型,如 StandardTCPIPPortUSBLPT 等。 通过指定端口名来关联已创建的端口,通常是 Add-PrinterPort 创建的端口。
执行前提 必须先定义打印机的端口,尤其是在网络打印机或特定连接方式下。 必须先创建或有现成的打印机端口,通常是通过 Add-PrinterPort 创建的端口。
输出 创建一个新的打印机端口。 安装并配置一个新的打印机。
常见应用 配置网络打印机、串口打印机、并口打印机等连接。 将新的打印机安装到 Windows 系统,并确保其工作正常。

 

  • Add-PrinterPort 主要是用来创建打印机端口,配置打印机如何连接到计算机(如网络打印机的 IP 地址)。
  • Add-Printer 主要用于添加新的打印机,指定打印机名称、端口和驱动程序,完成打印机的安装。

这两个命令通常是配合使用的:先用 Add-PrinterPort 创建一个端口,再用 Add-Printer 将打印机连接到该端口。


通过 PowerShell 添加网络打印机并创建一个标准 TCP/IP 端口,您可以使用 Add-PrinterPortAdd-Printer cmdlet。以下是一个详细的示例,演示了如何创建 TCP/IP 端口并添加网络打印机。

步骤

  1. 创建 TCP/IP 端口
  2. 添加打印机

示例代码

powershellCopy Code
# 设置打印机的 IP 地址和打印机名称
$printerIpAddress = "192.168.1.100"  # 替换为实际的打印机 IP 地址
$printerName = "MyNetworkPrinter"     # 替换为打印机名称

# 创建 TCP/IP 端口
$portName = "$printerIpAddress Port"  # 为端口命名
$port = Get-PrinterPort -Name $portName -ErrorAction SilentlyContinue

if (-not $port) {
    # 如果端口不存在,则创建端口
    Add-PrinterPort -Name $portName -PrinterHostAddress $printerIpAddress
}

# 添加网络打印机
Add-Printer -Name $printerName -PortName $portName -DriverName "YourPrinterDriverName" -Comment "Network Printer"

详细说明

  1. 创建 TCP/IP 端口

    • Add-PrinterPort 用于创建一个新的 TCP/IP 打印机端口。使用 -PrinterHostAddress 参数指定打印机的 IP 地址。
  2. 添加打印机

    • Add-Printer 用于添加打印机。您需要指定打印机名称、端口名称和驱动程序名称(替换 "YourPrinterDriverName" 为您实际的打印机驱动程序名称)。

检查和验证

在添加打印机之后,您可以使用以下命令来验证打印机是否已成功添加:

powershellCopy Code
Get-Printer | Where-Object { $_.Name -eq $printerName }

注意事项

  • 确保以管理员身份运行 PowerShell,以便执行添加打印机和端口的命令。
  • 确保打印机 IP 地址是正确的,并且网络打印机已连接到网络。
  • 如果您不确定打印机驱动程序的名称,可以使用以下命令查看已安装的打印机驱动程序:
powershellCopy Code
Get-PrinterDriver

通过上述步骤,您将能够成功地创建 TCP/IP 端口并添加网络打印机。


使用 PowerShell 安装 Windows 网络打印机,您可以通过以下步骤来实现。下面提供了一些常用的 PowerShell 命令,用于添加网络打印机。

1. 安装打印机的基本命令

powershellCopy Code
# 设置打印机的网络路径
$printerPath = "\\ServerName\PrinterName"

# 添加网络打印机
Add-Printer -ConnectionName $printerPath

2. 安装打印机驱动程序(如果需要)

在某些情况下,您可能需要先安装打印机驱动程序。以下是如何通过 PowerShell 安装打印机驱动程序的示例:

powershellCopy Code
# 设置驱动程序名称
$driverName = "PrinterDriverName"

# 安装打印机驱动程序(需将此替换为实际驱动程序文件的路径)
Add-PrinterDriver -Name $driverName

3. 完整示例

以下是一个完整的 PowerShell 脚本示例,展示如何安装网络打印机并确保驱动程序被正确安装:

powershellCopy Code
# 设置打印机路径和驱动程序名称
$printerPath = "\\ServerName\PrinterName"
$driverName = "PrinterDriverName"

# 检查驱动程序是否已安装
if (-not (Get-PrinterDriver -Name $driverName -ErrorAction SilentlyContinue)) {
    # 安装打印机驱动程序
    Add-PrinterDriver -Name $driverName
}

# 添加网络打印机
Add-Printer -ConnectionName $printerPath

4. 查看已安装的打印机

您可以使用以下命令查看已安装的打印机:

powershellCopy Code
Get-Printer

5. 注意事项

  • 确保以管理员身份运行 PowerShell,因为某些命令需要管理员权限。
  • 替换 \\ServerName\PrinterName 和 PrinterDriverName 为您的实际网络打印机路径和驱动程序名称。
  • 如果网络打印机未正确添加,请确保网络连接正常,并且您有适当的访问权限。

通过这些命令,您应该能够成功地在 Windows 系统中安装网络打印机。


 

posted @ 2024-10-24 12:05  suv789  阅读(1112)  评论(0)    收藏  举报