You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell从批量打印机中获取总打印作业数?

批量获取打印机总打印作业数的问题排查与解决

问题根源

你的问题大概率出在三个核心点:

  • 循环逻辑错误,未遍历CSV所有行,仅处理了最后一条记录
  • IP地址包含无效字符(空格、换行等),导致拼接的URL格式不合法
  • URL拼接时缺少必要的协议前缀(如http://),或变量引用错误

修正后的批量脚本

# 导入CSV文件,替换为你的实际文件路径
$printerList = Import-Csv -Path "打印机IP列表.csv"

# 遍历每一台打印机
foreach ($printer in $printerList) {
    # 清理IP中的空格、换行等无效字符
    $validIp = $printer.PortName.Trim()
    
    # 拼接标准HTTP URL
    $targetUri = "http://$validIp/JOBLOG.htm"

    try {
        # 发起请求,设置超时避免长时间等待
        $webResponse = Invoke-WebRequest -Uri $targetUri -TimeoutSec 15
        
        # 替换为你提取总打印作业数的原有逻辑
        # 示例:假设目标数据在某个<td>标签后,根据实际页面结构调整
        $totalJobs = ($webResponse.ParsedHtml.getElementsByTagName("td") | 
            Where-Object { $_.innerText -eq "总打印作业数" }).nextSibling.innerText

        # 输出结构化结果
        [PSCustomObject]@{
            PrinterIP   = $validIp
            TotalJobs   = $totalJobs
            Status      = "成功"
        }
    }
    catch {
        # 捕获错误并记录,不中断批量任务
        [PSCustomObject]@{
            PrinterIP   = $validIp
            TotalJobs   = $null
            Status      = "失败:$($_.Exception.Message)"
        }
    }
}

关键修复点说明

  • 遍历所有打印机:通过foreach循环遍历CSV每一行,确保每台打印机都被处理
  • 清理IP数据:用Trim()去除IP前后的空白字符,避免生成格式错误的URL
  • 标准URL拼接:明确添加http://协议前缀,确保生成符合Uri规范的请求地址
  • 异常容错:try/catch块保证单台打印机请求失败时,整个批量任务继续执行,同时记录错误原因
  • 结构化输出:用自定义对象输出结果,方便后续导出为CSV(添加| Export-Csv -Path "结果.csv" -NoTypeInformation即可)

额外排查步骤

  1. 检查CSV数据:运行Get-Content "打印机IP列表.csv" | Select-Object -First 5查看前5行,确认PortName列的IP没有多余字符
  2. 验证单IP可用性:从CSV中选一个报错的IP,手动在浏览器访问http://[IP]/JOBLOG.htm,确认页面可正常打开
  3. 调试URL生成:在循环中加入Write-Host "当前请求:$targetUri",实时查看生成的URL是否符合预期

内容的提问来源于stack exchange,提问作者Oleg Kovalenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:42:26