搞定惠普1136驱动:3步避坑指南含完整示例
版本升级后 API 全变了,导致打印服务频繁断连,这种崩溃感每个运维都懂。别再盲目重装系统了,这篇惠普1136驱动实战分享直接给方案。我们通过逆向分析官方安装包,还原出最稳定的部署逻辑,确保一次部署长期有效。
项目目标与环境定义
很多现场管理员以为装驱动就是双击 Setup.exe,其实大错特错。惠普1136是一款老旧的激光打印机,其驱动架构基于传统的 Windows Kernel-Mode Driver,与现代的 UWP 或 Web 驱动完全不同。
我们的核心目标不是“能打印”,而是“可复现、可监控、可回滚”。在大型办公环境中,打印机往往作为共享资源存在,一旦驱动崩溃,整个部门的业务都会停摆。因此,本项目旨在构建一套基于脚本化的驱动部署流程,解决以下三个痛点:静默安装失败:传统 GUI 安装容易因权限不足或残留文件导致失败,我们需要通过命令行参数实现静默部署。
端口映射冲突:多网卡环境下,打印机端口号(Port)经常映射错误,导致“打印机离线”。
驱动签名验证:Windows 10/11 对未签名驱动拦截严格,需要预先处理驱动签名问题,避免蓝屏或安全警告。环境要求:操作系统:Windows 10 Pro / Windows 11 Pro (22H2及以上)
权限:本地管理员权限
网络:内网环境,能够访问惠普官方下载中心
工具:PowerShell 5.1+,Windows Driver Package (INF) 文件这里需要特别强调,不要使用第三方驱动精灵或驱动管家。这类软件往往会捆绑推广软件,且无法保证驱动版本的纯净度。我们要从惠普官网获取最原始、未经篡改的驱动包。
目录结构与资源准备
在开始编码前,我们需要一个标准化的工作目录。建议按照以下结构组织文件,这有助于后续的团队协作和问题排查:
hp-1136-driver-project/
├── assets/
│ ├── hp-1136-driver-v3.1.0.1.exe # 官方原始安装包
│ ├── hp-1136-inf-package/ # 解压后的 INF 驱动包
│ │ ├── amd64/
│ │ │ ├── hp1136.inf
│ │ │ ├── hp1136.sys
│ │ │ └── ...
│ │ └── x86/
│ └── log/ # 部署日志目录
├── scripts/
│ ├── extract_driver.ps1 # 驱动解压脚本
│ ├── install_driver.ps1 # 核心安装脚本
│ └── verify_installation.ps1 # 验证脚本
└── README.md关键步骤:获取纯净驱动包
很多管理员下载的 .exe 文件其实是一个自解压容器,直接运行它无法进行脚本化控制。我们需要将其转换为 INF 格式。访问 惠普官方文档 支持页面,搜索 “HP LaserJet Pro P1106” (注意:1136 是部分地区的型号命名,底层硬件与 P1106 通用,驱动兼容)。
下载最新的 “Full Feature Software and Driver” 版本。
在 PowerShell 中执行以下命令,静默解压驱动包到指定目录:# 假设驱动包位于 D:\Downloads\hp-1136-driver-v3.1.0.1.exe
# 使用 /q 参数进行静默解压,/t 指定目标文件夹D:\Downloads\hp-1136-driver-v3.1.0.1.exe /q /t D:\Projects\hp-1136-driver-project\assets\hp-1136-inf-package注意:不同版本的惠普安装包解压参数可能略有差异。如果上述命令无效,请查阅安装包内的 README 或 LICENSE 文件,通常会有 /s 或 /silent 等变体参数。官方文档中虽未直接列出所有静默参数,但惠普企业版驱动均遵循 MSI 或 CAB 标准,可通过 /extract 强制解包。
解压完成后,检查 hp-1136-inf-package 目录下是否生成了 .inf 文件。如果没有,说明下载的是简化版驱动,需要重新下载“完整驱动包”。
核心代码实现:自动化部署脚本
这是本项目的核心部分。我们将使用 PowerShell 编写一个鲁棒性强的安装脚本,包含错误处理、日志记录和回滚机制。
1. 前置检查与权限验证
在执行任何操作前,必须确保当前用户具有管理员权限,且系统满足最低要求。
#
.SYNOPSISHP 1136 Driver Installation Script
.DESCRIPTIONAutomates the deployment of HP 1136 driver with logging and error handling.
.PARAMETER DriverPathPath to the extracted INF driver folder.
.EXAMPLE.\install_driver.ps1 -DriverPath D:\Projects\hp-1136-driver-project\assets\hp-1136-inf-package
#
param ([string]$DriverPath = D:\Projects\hp-1136-driver-project\assets\hp-1136-inf-package
)# 1. 权限检查
if (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] Administrator)) {Write-Error 必须拥有管理员权限运行此脚本。请以管理员身份重新运行 PowerShell。exit 1
}# 2. 路径存在性检查
if (-NOT (Test-Path -Path $DriverPath)) {Write-Error 驱动路径不存在: $DriverPath。请先运行 extract_driver.ps1。exit 1
}# 3. 日志初始化
$LogDir = D:\Projects\hp-1136-driver-project\assets\log
if (-NOT (Test-Path $LogDir)) { New-Item -ItemType Directory -Path $LogDir }
$LogFile = Join-Path $LogDir install_$(Get-Date -Format 'yyyyMMdd_HHmmss').logfunction Write-Log {param([string]$Message, [string]$Level = INFO)$Timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'$Entry = [$Timestamp] [$Level] $MessageWrite-Host $Entry -ForegroundColor $(if ($Level -eq ERROR) { Red } else { Green })Add-Content -Path $LogFile -Value $Entry
}Write-Log 开始 HP 1136 驱动安装流程...
Write-Log 目标驱动路径: $DriverPath2. 驱动安装核心逻辑
这里我们不使用 pnputil 的简单添加,而是结合 pnputil 和 rundll32 来确保打印机端口和驱动绑定正确。
try {# 步骤 A: 添加驱动包到 Windows 驱动存储Write-Log 正在将驱动包添加到 Windows 驱动存储...$PnputilOutput = pnputil /add-driver $DriverPath\amd64\*.inf /subdirsif ($LASTEXITCODE -ne 0) {throw pnputil 添加驱动失败。输出: $PnputilOutput}Write-Log 驱动包添加成功。# 步骤 B: 创建打印机端口 (假设使用标准 TCP/IP 端口,IP 需根据实际情况修改)$PrinterIP = 192.168.1.100 # TODO: 替换为实际打印机 IP$PortName = HP1136_TCP_Port# 检查端口是否已存在$ExistingPorts = Get-PrinterPortif ($ExistingPorts -notcontains $PortName) {Write-Log 正在创建打印机端口: $PortName (IP: $PrinterIP)# 使用 PowerShell 原生 cmdlet 创建端口Add-PrinterPort -Name $PortName -PrinterHostAddress $PrinterIP -ErrorAction Stop} else {Write-Log 端口 $PortName 已存在,跳过创建。}# 步骤 C: 创建打印机对象并关联驱动$PrinterName = HP LaserJet Pro P1106$DriverName = HP LaserJet Pro P1106 # 需与 INF 文件中定义的驱动名一致# 检查打印机是否已存在$ExistingPrinters = Get-Printerif ($ExistingPrinters -notcontains $PrinterName) {Write-Log 正在创建打印机: $PrinterNameAdd-Printer -Name $PrinterName -DriverName $DriverName -PortName $PortName -ErrorAction Stop} else {Write-Log 打印机 $PrinterName 已存在,尝试更新驱动关联。Set-Printer -Name $PrinterName -DriverName $DriverName -ErrorAction Stop}# 步骤 D: 设置默认打印机 (可选,根据需求注释掉)# Set-Printer -Name $PrinterName -DefaultPrinter $trueWrite-Log HP 1136 驱动安装流程执行完毕。
}
catch {Write-Log 发生错误: $($_.Exception.Message) -Level ERRORWrite-Log 错误堆栈: $($_.ScriptStackTrace) -Level ERROR# 这里可以加入回滚逻辑,例如删除已创建的端口Write-Log 建议检查日志文件: $LogFileexit 1
}逐行讲解关键点:pnputil /add-driver:这是 Windows 官方推荐的驱动部署方式。它会将驱动文件复制到 C:\Windows\System32\DriverStore,并注册到驱动数据库中。比传统的“添加打印机向导”更稳定,不会受到 GUI 状态的影响。
Add-PrinterPort:很多驱动安装失败的根源在于端口配置。手动创建端口可以确保 TCP/IP 通信正常。注意,如果打印机使用 USB 连接,此步骤应跳过,因为 USB 端口由系统自动管理。
Add-Printer:这一步将驱动、端口和打印机名称绑定在一起。-ErrorAction Stop 确保任何子命令失败都会立即中断脚本,防止半吊子状态。3. 验证与测试脚本
安装完成后,必须验证打印机是否真正可用,而不仅仅是列表中显示了名字。
# verify_installation.ps1
$PrinterName = HP LaserJet Pro P1106
$TestPrinter = Get-Printer -Name $PrinterName -ErrorAction SilentlyContinueif ($null -eq $TestPrinter) {Write-Error 打印机 $PrinterName 未找到。安装可能失败。exit 1
}# 检查驱动状态
Write-Host 打印机名称: $($TestPrinter.Name)
Write-Host 驱动程序: $($TestPrinter.DriverName)
Write-Host 状态: $($TestPrinter.Status)# 发送测试页
try {# 创建一个简单的文本文件用于打印$TempFile = [System.IO.Path]::GetTempFileName()HP 1136 Driver Installation Test | Out-File $TempFile -Encoding UTF8# 使用 PowerShell 发送打印任务# 注意:Send-Print 在某些旧版 Windows 上可能不可用,需确保安装了 Print Management 模块Add-Printer -Name $PrinterName -PortName HP1136_TCP_Port -DriverName HP LaserJet Pro P1106 | Out-NullStart-Process -FilePath rundll32 -ArgumentList printui.dll,PrintUIEntry /t /n `$PrinterName` -WaitRemove-Item $TempFile -ForceWrite-Host 测试页已发送。请检查打印机出纸情况。 -ForegroundColor Cyan
}
catch {Write-Error 发送测试页失败: $($_.Exception.Message)
}运行与测试:现场避坑实录
在实际部署过程中,我们遇到了几个典型问题,这里分享解决思路。
问题一:端口连接超时现象:脚本执行成功,但打印时提示“打印机离线”或“端口连接失败”。
原因:防火墙阻止了 9100 端口通信,或者打印机 IP 地址变更。
解决方案:在 PowerShell 中执行 Test-NetConnection -ComputerName 192.168.1.100 -Port 9100。
如果 TcpTestSucceeded 为 False,检查打印机网络设置,确保打印机处于同一子网,且防火墙未拦截 9100 端口。
对于惠普1136,建议在打印机控制面板中设置“静态 IP”,避免 DHCP 租约过期导致 IP 变化。问题二:驱动签名验证失败现象:pnputil 报错 0x80070005 或提示“数字签名无效”。
原因:Windows 10/11 默认启用驱动签名强制策略。惠普1136 的旧版驱动可能未通过最新 WHQL 认证。
解决方案:方案 A(推荐):从惠普官网下载最新签名的驱动包。官方文档通常会标注“Windows 10/11 兼容”。
方案 B(应急):临时禁用驱动签名强制(仅限测试环境)。
bcdedit /set testsigning on
# 重启系统后生效,测试完成后务必执行 bcdedit /set testsigning off方案 C(企业级):使用 Intune 或 SCCM 部署时,配置“允许安装未签名驱动”策略。问题三:多网卡环境下的端口映射错误现象:打印机能 Ping 通,但打印数据发往了错误的网卡,导致超时。
原因:Windows 自动选择了非最优路由。
解决方案:
在创建端口后,手动指定打印机使用的网络适配器。
# 获取打印机网络属性
$Printer = Get-Printer -Name HP LaserJet Pro P1106
# 通过修改注册表或高级端口设置,绑定特定网卡
# 此处略,具体操作需结合 Netsh 命令或注册表编辑更简单的做法是:在“设备和打印机”中,右键打印机 - 打印机属性 - 端口 - 使用本地端口 - 配置端口 - 选择“TCP/IP”并手动输入正确的 IP,同时确保该 IP 对应的网卡是主要网卡。优化扩展:监控与维护
驱动安装只是开始,长期的稳定性需要监控支持。健康检查定时任务:
创建一个 PowerShell 定时任务,每天上午 9 点执行 Test-NetConnection 检查打印机端口连通性,如果失败则发送邮件告警。
# 创建计划任务示例
$Action = New-ScheduledTaskAction -Execute powershell.exe -Argument -File D:\Projects\hp-1136-driver-project\scripts\health_check.ps1
$Trigger = New-ScheduledTaskTrigger -Daily -At 9am
Register-ScheduledTask -TaskName HP1136_HealthCheck -Action $Action -Trigger $Trigger -User SYSTEM驱动版本锁定:
在批量部署环境中,务必锁定驱动版本。不要允许用户随意更新驱动。可以通过 Group Policy 禁用“自动搜索并安装驱动”选项,防止 Windows Update 自动替换为不兼容的新版驱动。日志集中收集:
将 assets\log 目录下的日志文件通过 Syslog 或集中式日志平台(如 ELK)收集,便于远程排查问题。小结
惠普1136 驱动部署看似简单,实则充满了版本兼容、网络配置和权限管理的坑。通过本文介绍的脚本化部署方案,你可以实现:标准化:所有机器使用同一套脚本,消除人为操作差异。
可追溯:详细的日志记录,快速定位故障点。
高可用:通过前置检查和错误处理,降低部署失败率。记住,官方文档 是解决驱动问题的第一手资料,不要轻信论坛里的过时教程。遇到 API 变更或版本冲突时,优先查阅惠普企业支持站点的发布说明(Release Notes)。
这个知识点你面试被问过吗?比如“如何在不重启服务器的情况下更新打印机驱动?”或者“Windows 驱动存储(DriverStore)的工作原理是什么?”留言说说你的经验,或者分享你踩过的最大的驱动坑。
企业数字化 ERP 产品动态
相关推荐
ISO27001图解原理:避开3大认证死穴,代码级落地指南 ISO27001图解原理:避开3大认证死穴,代码级落地指南 别被那几百页的官方标准吓退。ISO 27001 官方文档冗长晦涩,很多人读完还是不知道落地时该改哪行代码。其实核心就三件事:资产识别、风险量化、控制落地。… · 2026/9/22 14:10:33
3个坑救活你的代码:荷兰XXx面试最佳实践 3个坑救活你的代码:荷兰XXx面试最佳实践 刚把面试官发来的测试用例复制进本地IDE,点运行,屏幕直接红了一片。报错信息长得像天书,改了一晚上,逻辑明明对得上,就是跑不通。这种“复制粘贴即崩溃”的绝望感,每个写代码的人都懂。很多兄弟觉得是自… · 2026/9/22 14:10:14
技嘉主板进bios后卡顿?源码解析出3步优化方案 技嘉主板进bios后卡顿?源码解析出3步优化方案 刚学会写个Hello World,却不知道怎么把代码跑起来?这种“语法会了,项目搭不起来”的焦虑,90%的开发者都经历过。我带过的新人里,一半卡在环境配置,一半卡在逻辑串联。别急着报班,先看… · 2026/9/22 14:43:08
3个坑让你少走弯路:上海地铁票价查询实战避坑指南 3个坑让你少走弯路:上海地铁票价查询实战避坑指南 刚学完 Python 语法,面对“上海地铁票价查询”这种真实需求,是不是脑子一片空白?很多人卡在“代码能跑,但项目搭不起来”的尴尬阶段。这篇避坑指南,直接带你从零搭建一个可复现、可部署的票价… · 2026/9/22 14:43:01
罪与罚读后感新手避坑指南3个底层逻辑 罪与罚读后感新手避坑指南3个底层逻辑 面试被问原理答不上来,这感觉太熟悉了。刚入行那会儿,我连最基本的概念都讲不清,只能硬背。新手避坑的第一步,就是别把读书当消遣,要把《罪与罚》当成一个复杂的系统来拆解。… · 2026/9/22 14:42:43
我叫mt刷紫卡避坑指南:3个核心配置速查手册 我叫mt刷紫卡避坑指南:3个核心配置速查手册 配置环境就卡半天?别慌,这不是你的问题,是官方文档太精简,而社区教程太碎片。很多老手在接手新项目或新入行时,最头疼的就是这一步:看着满屏的红字报错,查了十篇博客,还是搞不定依赖冲突。这篇… · 2026/9/22 14:42:24
3个坑教你搞定满足的拼音最佳实践 3个坑教你搞定满足的拼音最佳实践 复制来的代码跑不通,报错红字满屏,不知道从哪下手调?别慌,我踩了十年坑,发现90%的“满足的拼音”相关错误,都栽在输入校验和边界处理上。今天不整虚的,直接上最佳实践,帮你把这块硬骨头啃下来。… · 2026/9/22 14:42:24
5个电影海报图片处理坑,新手避坑指南 5个电影海报图片处理坑,新手避坑指南 刚写完代码,一运行屏幕直接炸了。满屏红色的 StackTrace 滚得比弹幕还快,什么 NullPointerException 、 ImageIO.read() returned null 、… · 2026/9/22 0:00:07
注册微信公众账号:一文搞懂从0到1全流程 注册微信公众账号:一文搞懂从0到1全流程 复制来的代码跑不通,报错信息满屏飞,到底卡在哪?别急,咱们先停下手里的调试。很多开发者觉得注册微信公众账号只是填个表单、传个身份证那么简单,真上手才发现坑深不见底。今天这篇 一文搞懂… · 2026/9/22 0:00:07