Windows打印管理自动化:PowerShell脚本与WMI技术实战指南

news2026/5/5 4:05:20
1. 项目概述一个被忽视的Windows打印管理痛点如果你管理过超过十台Windows电脑的办公环境或者自己家里有几台不同型号的打印机大概率都经历过这种抓狂时刻A电脑能正常打印B电脑死活连不上昨天还好好的今天突然提示“打印后台处理程序服务没有运行”想批量删除几十台电脑上过时的打印机驱动只能一台台手动操作费时费力。这些看似琐碎的打印问题实际上严重消耗着IT支持人员和普通用户的精力。FueTsui/windows-printing这个项目正是瞄准了这个长期存在却又常被忽视的痛点。它不是一个简单的打印机共享工具而是一个旨在通过脚本化和自动化手段系统性解决Windows环境下打印管理复杂性的开源工具集。其核心价值在于将那些需要通过图形界面点点戳戳、或者依赖组策略高级配置才能完成的打印管理任务转化为清晰、可重复、可批量执行的命令行或脚本操作。简单来说它让打印管理从“手工艺术”变成了“标准工程”。无论是为域环境中的新用户批量部署网络打印机还是清理因驱动冲突导致的顽固打印队列亦或是快速备份和恢复整个打印服务器的配置这个项目都提供了直达问题核心的“手术刀”。对于系统管理员、桌面支持工程师甚至是需要维护家庭或小型办公网络的技术爱好者而言掌握这套工具意味着能将大量重复、易出错的打印相关运维工作自动化从而腾出时间处理更有价值的问题。2. 核心设计思路为何选择脚本化与WMI/PowerShell2.1 图形界面管理的局限性传统的Windows打印管理高度依赖“控制面板”-“设备和打印机”图形界面GUI以及“打印管理”控制台。这种方式对于处理单次、孤立的操作尚可但存在几个致命缺陷不可重复与低效为100台电脑添加同一台打印机需要在100台电脑上重复完全相同的点击步骤无法批量完成。难以排错与记录操作过程是黑盒的当出现“安装失败”等错误时图形界面给出的提示往往过于笼统例如一个简单的错误代码难以追溯具体是哪一步出了问题。同时缺乏操作日志无法复盘。无法集成到自动化流程在现代IT运维中系统部署、软件分发、配置管理都趋向于自动化如使用Ansible, SCCM, Intune。图形界面的操作无法被这些自动化工具直接调用形成了管理流程上的断点。windows-printing项目选择完全基于命令行和脚本正是为了从根本上克服这些局限性。它主要依托两个Windows平台的核心管理接口Windows Management Instrumentation (WMI)和PowerShell Cmdlets。2.2 技术栈选型WMI与PowerShell的深度结合WMI是Windows系统管理的基石它提供了一个统一的模型来访问和控制操作系统、硬件、应用程序等几乎所有层面的信息。在打印领域Win32_Printer、Win32_PrintJob等WMI类包含了打印机、驱动、端口、作业的完整属性和方法。通过WMI查询语言WQL可以精准地获取和筛选打印相关的信息。PowerShell则是更上层的、功能强大的脚本语言和Shell环境。它原生集成了对WMI的调用能力通过Get-WmiObject或更新的Get-CimInstanceCmdlet并且微软为打印管理专门提供了PrintManagement模块包含Get-Printer,Add-Printer,Remove-PrinterPort等一系列Cmdlet。PowerShell脚本易于编写、调试并且可以方便地封装成函数、模块甚至编译成可执行文件。项目的设计思路是利用PowerShell脚本封装对WMI和PrintManagement模块的调用将复杂的打印管理操作抽象成一个个简单、参数化的命令或脚本文件。例如一个“添加网络打印机”的操作在背后可能依次调用了检查端口是否存在、下载并安装驱动、创建打印机对象、设置默认选项等一连串WMI或PowerShell操作。项目将这些步骤固化下来用户只需提供打印机IP、共享名等少数几个参数即可完成。注意项目早期版本可能更侧重于直接调用WMI因为其兼容性更广支持到古老的PowerShell 2.0乃至VBScript。而现代版本则会优先使用PowerShell PrintManagement模块因为其语法更简洁错误处理更友好。在实际使用中需要根据目标系统的PowerShell版本灵活选择或组合使用。2.3 面向的场景与用户这个项目主要服务于以下几类用户企业IT管理员需要在Active Directory域环境中大规模部署、更新或移除打印机。他们可以利用这些脚本集成到登录脚本、组策略启动脚本或任务序列中实现无人值守的打印机配置。系统集成商/部署工程师在为客户部署新的办公电脑或迁移打印服务器时需要快速、准确地完成打印环境搭建。脚本可以确保配置的一致性减少人为错误。高级用户/技术爱好者管理家庭网络中的多台打印机或为小型工作室配置打印环境。他们可以通过脚本简化日常维护如定期清理打印队列、备份打印机设置等。帮助台支持人员拥有一套标准化的排错脚本可以快速诊断常见的打印问题如后台服务停止、驱动损坏、端口错误等而无需远程连接到用户电脑上进行繁琐的图形界面操作。3. 核心功能模块深度解析windows-printing项目通常不会是一个单一的巨型脚本而是一系列功能模块的集合。我们可以将其核心功能分解为以下几个关键模块来理解。3.1 打印机与驱动管理模块这是项目的基石负责打印机的生命周期管理添加、删除、配置和枚举。1. 打印机添加Add-Printer一个健壮的打印机添加脚本远不止是调用Add-Printer那么简单。它需要处理以下逻辑链参数验证检查提供的打印机IP地址是否可达共享名是否正确。端口检查与创建检查标准的TCP/IP打印端口例如IP_192.168.1.100是否存在。如果不存在则先调用Add-PrinterPort创建它。这里有个关键细节需要正确设置端口的SNMP状态社区名称通常为public和设备索引否则可能无法正确获取打印机状态。驱动处理这是最复杂的部分。脚本需要判断目标驱动是否已存在于驱动存储区可以通过Get-PrinterDriver查询。如果不存在是从本地.inf文件安装还是从网络共享或内置仓库安装这涉及到调用pnputil.exe或Add-PrinterDriver并可能需要处理数字签名验证。对于企业环境更佳实践是先在打印服务器上集中安装驱动然后客户端通过“指向并打印”或从服务器自动下载驱动。脚本需要支持这两种模式。创建打印机对象最后才是调用Add-Printer绑定端口、驱动和打印机名称并可能设置默认属性如双面打印、纸张类型。2. 驱动清理Printer Driver CleanupWindows的打印机驱动存储机制有时会“泄漏”卸载打印机后其驱动文件可能仍残留在系统中占用磁盘空间并可能引起冲突。此模块的功能是识别并删除这些孤立的驱动。原理通过WMI枚举Win32_Printer和Win32_PrinterDriver找出所有已安装的驱动。然后检查每个驱动是否还有与之关联的打印机实例。如果没有则该驱动被视为“孤儿驱动”。风险与注意事项删除驱动是一个高风险操作。脚本必须提供“模拟运行”-WhatIf参数先列出将要删除的驱动让管理员确认。同时要特别注意不要删除系统核心驱动或正在被其他打印机使用的驱动。一个稳健的脚本会先尝试使用Remove-PrinterDriverCmdlet对于顽固的驱动可能需要追溯到C:\Windows\System32\spool\drivers目录进行手动文件删除和注册表清理这需要极高的权限和对系统结构的深刻理解需极其谨慎。3.2 打印队列与作业管理模块此模块用于监控和控制具体的打印任务是解决“卡住不打印”问题的利器。1. 队列监控与清除打印队列Spooler卡死是常见故障。脚本可以提供以下功能列出所有作业Get-PrintJob可以获取每台打印机上所有作业的详细信息作业ID、状态正在打印、暂停、错误、页数、提交时间等。批量清除作业当队列堵塞时Remove-PrintJob可以按打印机、按用户或按状态如所有错误作业批量删除作业。比在图形界面里一个个右键删除高效得多。暂停/继续队列Suspend-PrintJob和Resume-PrintJob可以在进行维护或排查问题时临时冻结或恢复打印任务。2. 高级状态诊断除了基本操作脚本可以集成诊断逻辑。例如一个诊断脚本可以检查打印后台处理程序服务Spooler的运行状态如果停止则尝试重启。检查系统盘通常是C盘剩余空间因为假脱机文件需要磁盘空间。检查特定打印机的端口状态尝试Ping打印机IP判断是网络问题还是打印机本身问题。3.3 配置备份与还原模块对于打印服务器或关键工作站的打印配置定期备份至关重要。此模块实现了配置的导出与导入。1. 配置导出备份不仅仅是导出打印机列表。一个完整的备份应包括所有打印机对象及其属性名称、端口、驱动、默认首选项纸张、双面、色彩。所有打印端口配置IP地址、协议、SNMP设置。所有已安装的驱动信息驱动名称、版本、文件路径。导出形式通常导出为结构化数据格式如XML、JSON或CSV。PowerShell的Export-Clixml命令非常适合因为它能保留对象的类型信息便于后续还原。2. 配置还原还原脚本读取备份文件并按照与添加打印机相似的逻辑在目标机器上重建整个打印环境。这里的关键挑战是依赖关系和幂等性。依赖关系必须先创建端口和安装驱动最后才能添加打印机。脚本必须处理好这个顺序。幂等性脚本应该可以安全地重复运行。在还原前它应该检查目标系统是否已存在同名的端口、驱动或打印机并采取相应的策略跳过、覆盖或重命名。这通常通过-ErrorAction SilentlyContinue配合条件判断来实现。3.4 批量操作与远程执行模块这是体现项目自动化价值的关键。通过PowerShell的远程处理WS-Management或结合其他配置管理工具实现对多台计算机的批量打印管理。1. 使用Invoke-Command进行远程批量操作核心Cmdlet是Invoke-Command。假设我们有一个计算机名列表文件computers.txt要为其全部添加一台打印机$ComputerList Get-Content -Path .\computers.txt $ScriptBlock { # 这里是上一节中“添加打印机”的脚本代码 param($PrinterIP, $PrinterName) # ... 添加打印机的具体逻辑 ... } Invoke-Command -ComputerName $ComputerList -ScriptBlock $ScriptBlock -ArgumentList 192.168.1.100, Finance-Printer注意事项远程执行要求目标计算机已启用PSRemoting可通过组策略统一配置并且执行账户有相应的管理员权限。对于未加域的计算机需要处理CredSSP或SSL证书认证复杂度较高。2. 生成部署包对于无法或不便开启PSRemoting的环境如某些严格的安全策略下可以将核心脚本和所需资源如驱动文件打包成一个独立的可执行文件或批处理脚本。这个部署包可以放在网络共享上通过其他分发手段如SCCM、PDQ Deploy甚至邮件让用户运行或者由支持人员在远程协助时执行。4. 实战从零构建一个健壮的打印机部署脚本让我们以一个具体场景为例编写一个用于域环境的标准网络打印机部署脚本。目标是为登录到域的用户在其电脑上自动添加位于192.168.10.50的打印服务器上的\PrintSrv\ColorLaser共享打印机。4.1 脚本框架与参数设计首先一个好的脚本应该易于使用和配置。我们设计参数使其可以通过命令行或配置文件调用。# .SYNOPSIS 自动部署网络打印机到域用户计算机。 .DESCRIPTION 该脚本检查并创建标准TCP/IP端口从打印服务器安装驱动并添加共享打印机。 .PARAMETER PrinterServer 打印服务器的主机名或IP地址。 .PARAMETER PrinterShareName 打印机在服务器上的共享名。 .PARAMETER LocalPrinterName 在本地显示的打印机名称可选默认为共享名。 .PARAMETER DriverName 驱动名称用于匹配或安装可选脚本可尝试自动检测。 .EXAMPLE .\Deploy-NetworkPrinter.ps1 -PrinterServer PrintSrv -PrinterShareName ColorLaser # [CmdletBinding()] param( [Parameter(Mandatory$true)] [string]$PrinterServer, [Parameter(Mandatory$true)] [string]$PrinterShareName, [string]$LocalPrinterName $PrinterShareName, [string]$DriverName )我们使用[CmdletBinding()]来启用高级函数特性如-WhatIf和-Verbose这对调试和模拟运行非常有用。4.2 核心逻辑实现步骤步骤1构造打印机连接路径并检查网络连通性$PrinterPath \\$PrinterServer\$PrinterShareName Write-Verbose 目标打印机路径: $PrinterPath # 简单网络连通性测试可选但建议 if (-not (Test-Connection -ComputerName $PrinterServer -Count 1 -Quiet)) { Write-Warning 无法连接到打印服务器 $PrinterServer。请检查网络。 # 在实际部署中这里可能不是错误而是跳过或记录日志因为用户可能离线。 # return }步骤2检查是否已存在同名打印机幂等性检查避免重复安装。$ExistingPrinter Get-Printer -Name $LocalPrinterName -ErrorAction SilentlyContinue if ($ExistingPrinter) { Write-Host 打印机 $LocalPrinterName 已存在。跳过安装。 -ForegroundColor Yellow # 可选检查现有打印机路径是否正确如果不正确则修复 if ($ExistingPrinter.PortName -notlike *$PrinterServer*) { Write-Warning 现有打印机端口与目标服务器不匹配可能需要重新配置。 } return }步骤3添加打印机核心操作这里我们直接使用Add-Printer的共享打印机连接方式。这是最简洁的方法Windows会自动处理端口创建和驱动安装从打印服务器下载。try { Write-Host 正在尝试添加共享打印机: $LocalPrinterName ... -ForegroundColor Cyan Add-Printer -ConnectionName $PrinterPath -Name $LocalPrinterName -ErrorAction Stop Write-Host 打印机 $LocalPrinterName 添加成功 -ForegroundColor Green } catch { Write-Error 添加打印机失败: $_ # 更细致的错误处理可以在这里展开 # 例如如果是访问被拒可能是权限问题如果是RPC服务器不可用可能是防火墙或服务问题。 }4.3 增强错误处理与日志记录生产环境脚本必须有完善的错误处理和日志。# 在脚本开头定义日志文件路径 $LogPath $env:TEMP\PrinterDeployment_$(Get-Date -Format yyyyMMdd).log function Write-Log { param([string]$Message, [string]$Level INFO) $Timestamp Get-Date -Format yyyy-MM-dd HH:mm:ss $LogMessage $Timestamp [$Level] $Message Add-Content -Path $LogPath -Value $LogMessage # 根据级别输出到控制台 switch ($Level) { ERROR { Write-Error $Message } WARNING { Write-Warning $Message } default { Write-Verbose $Message } } } # 在关键步骤使用日志函数 Write-Log 开始执行打印机部署脚本。参数: Server$PrinterServer, Share$PrinterShareName try { Add-Printer -ConnectionName $PrinterPath -Name $LocalPrinterName -ErrorAction Stop Write-Log 成功添加打印机: $LocalPrinterName } catch [System.Management.Automation.ActionPreferenceStopException] { Write-Log 添加打印机时发生严重错误: $($_.Exception.Message) -Level ERROR # 可以在这里添加更具体的恢复或通知逻辑 }4.4 封装与部署脚本写好后可以将其保存为.ps1文件。为了在域环境中部署常见方法有组策略登录脚本将脚本放在域控的Netlogon共享中并通过组策略“用户配置”-“策略”-“Windows设置”-“脚本登录/注销”分配给用户。注意这是用户上下文可能没有安装本地打印机驱动的权限更适合添加基于服务器的共享打印机。组策略启动脚本通过“计算机配置”分配在计算机启动时系统上下文运行。权限更高适合安装本地打印机驱动或进行系统级配置。任务序列在SCCM或MDT的镜像部署任务序列中加入一个“运行PowerShell脚本”的步骤。直接推送执行在拥有管理员权限和PSRemoting的条件下使用前面提到的Invoke-Command进行批量推送。5. 常见问题排查与实战技巧实录即使有了自动化脚本在实际环境中仍然会遇到各种千奇百怪的问题。下面是我在多年实践中总结的一些典型问题及其排查思路。5.1 问题一“指向并打印”策略导致驱动安装失败现象在域环境中使用脚本通过共享路径\\server\share添加打印机时提示“驱动程序不可用”或“Windows无法连接到打印机”。根因出于安全考虑域组策略可能禁用了“指向并打印”功能或者限制了只能从特定服务器列表安装驱动。排查与解决检查组策略在客户端运行gpresult /h gp.html或rsop.msc查看“计算机配置”-“管理模板”-“打印机”下的策略。“限制指向并打印到这些服务器”必须确保你的打印服务器FQDN在此白名单中。“指向并打印限制”如果设置为“已禁用”或“不显示警告或提升提示”则可能完全阻止了操作。在企业环境中通常需要设置为“已启用”并勾选“用户只能指向并打印到这些服务器”和“在提升特权时指向并打印”。临时解决方案如果无法立即修改组策略可以尝试“手动安装驱动后添加端口”的备用方案。即先将驱动文件.inf, .cat等手动复制到客户端或通过脚本解压使用pnputil /add-driver安装驱动然后脚本使用Add-PrinterPort和Add-Printer来添加指定本地已安装的驱动名而不是依赖服务器下载。5.2 问题二脚本在部分电脑上成功部分失败现象批量执行时成功率不是100%。排查思路收集日志这是最重要的。确保你的脚本有如上节所述的日志功能。失败电脑的日志会记录具体的错误信息。环境差异性检查操作系统版本/架构32位和64位系统需要的驱动不同。确保你的脚本或驱动包能应对这种差异。可以通过[Environment]::Is64BitOperatingSystem来判断。PowerShell版本老旧系统可能是PowerShell 2.0不支持某些较新的Cmdlet如PrintManagement模块。脚本开头应进行版本检查并提供回退方案如使用WMI。用户权限添加打印机尤其是需要安装本地驱动时需要管理员权限。检查脚本是否以管理员身份运行。可以通过#Requires -RunAsAdministrator指令强制要求。安全软件拦截某些杀毒软件或端点防护软件可能会阻止PowerShell脚本运行或阻止创建打印端口。需要将脚本加入白名单。5.3 问题三打印机添加成功但无法打印脱机、错误现象脚本显示打印机添加成功但打印测试页时打印机显示为“脱机”或打印作业直接出错。排查步骤检查端口状态运行Get-PrinterPort -Name “IP_*” | Format-List查看为打印机配置的IP端口是否正确SNMP是否启用。一个常见的错误是端口创建时SNMP未启用导致Windows无法感知打印机状态误判为脱机。可以使用Set-PrinterPort -Name “IP_192.168.1.100” -SNMP 1 -SNMPCommunity “public”来启用。检查驱动匹配运行Get-Printer -Name “PrinterName” | Format-List DriverName, Shared, PortName。确认驱动名称是否与打印机型号完全匹配。有时Windows会安装一个“通用”驱动可能导致功能不全。需要指定确切的驱动名。检查后台服务运行Get-Service -Name Spooler。确保服务状态是“Running”。如果不是使用Start-Service -Name Spooler启动它。可以写一个简单的修复函数集成到脚本中。物理连接与打印机自身状态最后别忘了基础检查网线是否插好打印机IP地址是否变更打印机本身是否有卡纸或缺墨错误5.4 独家避坑技巧使用“延迟启动”处理依赖在部署镜像如MDT/SCCM的任务序列中如果添加打印机的步骤在安装Windows更新或某个软件之后可能会因为后台服务未就绪而失败。一个技巧是在PowerShell脚本开头加入Start-Sleep -Seconds 30给系统一个缓冲时间。更好的做法是循环检查服务状态while ((Get-Service Spooler).Status -ne ‘Running’) { Start-Sleep -Seconds 5 }。驱动安装的静默参数使用pnputil.exe安装驱动时加上-i和-a参数可以实现静默安装但有时需要处理数字签名警告。在受控的企业环境可以提前将驱动证书加入受信任的发布者。命令示例pnputil.exe /add-driver “OEMDRV.inf” /install。处理带空格的共享名如果打印机共享名包含空格如“Color Laser”在构造路径和传递参数时务必用引号括起来$PrinterPath “\\server\Color Laser”。在调用外部命令时要特别注意转义。备份与回滚在执行任何删除操作如清理驱动、打印机前务必将当前配置导出备份。可以写一个简单的Backup-PrintConfig.ps1脚本在删除前自动运行。这样如果出现问题可以快速还原。通过将上述问题排查逻辑也脚本化你可以构建一个强大的打印环境诊断工具箱将以往需要半小时的远程排查工作缩短到运行一个脚本、查看一份日志的几分钟之内。这正是windows-printing这类项目所追求的终极效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2583806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…