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

如何通过Windows批处理解析prnmngr.vbs输出并格式化为CSV文件?

批量提取多服务器打印机信息并导出CSV的解决方案

我来给你整理一个实用的批处理脚本方案,刚好能解决你从多台服务器提取指定打印机字段并导出CSV的需求:

核心实现思路

  • 用文本文件批量管理目标服务器列表,方便灵活添加/删除服务器
  • 遍历每台服务器,调用系统自带的Prnmngr.vbs获取完整打印机信息
  • 逐行解析键值对内容,精准提取你需要的服务器名、打印机名、共享名、驱动名、端口名
  • 把提取到的信息按CSV规范写入文件,自动处理字段中的特殊字符(比如逗号)

完整批处理脚本

@ECHO OFF
setlocal enabledelayedexpansion

:: 可配置参数
set "output_csv=Printers_Inventory.csv"  :: 输出的CSV文件名
set "servers_list=servers.txt"           :: 存放服务器列表的文本文件(每行一个服务器)
set "print_script=%WINDIR%\System32\Printing_Admin_Scripts\en-US\Prnmngr.vbs"

:: 生成CSV表头
echo "Server Name","Printer Name","Share Name","Driver Name","Port Name" > "%output_csv%"

:: 检查服务器列表文件是否存在
if not exist "%servers_list%" (
    echo 错误:未找到服务器列表文件 %servers_list%,请先创建该文件!
    pause
    exit /b 1
)

:: 开始遍历所有服务器
for /f "tokens=* delims=" %%s in (%servers_list%) do (
    echo 正在处理服务器:%%s
    :: 调用VBS脚本获取当前服务器的打印机信息
    for /f "tokens=* delims=" %%f in ('Cscript //nologo "%print_script%" -l -s "%%s"') do (
        set "current_line=%%f"
        
        :: 匹配并提取各个字段
        if "!current_line:~0,11!"=="Server name" set "server_name=!current_line:~13!"
        if "!current_line:~0,13!"=="Printer name" set "printer_name=!current_line:~15!"
        if "!current_line:~0,10!"=="Share name" set "share_name=!current_line:~12!"
        if "!current_line:~0,11!"=="Driver name" set "driver_name=!current_line:~13!"
        if "!current_line:~0,9!"=="Port name" set "port_name=!current_line:~11!"
        
        :: 当提取到端口名时,说明当前打印机的所有字段已收集完成,写入CSV
        if "!current_line:~0,9!"=="Port name" (
            :: 用双引号包裹字段,避免逗号破坏CSV格式
            echo "!server_name!","!printer_name!","!share_name!","!driver_name!","!port_name!" >> "%output_csv%"
            :: 重置变量,准备处理下一台打印机
            set "server_name="
            set "printer_name="
            set "share_name="
            set "driver_name="
            set "port_name="
        )
    )
)

echo 所有服务器处理完成!结果已保存到 %output_csv%
pause

使用步骤

  • 1. 准备服务器列表:在脚本同目录下创建servers.txt,每行输入一个服务器的名称或IP地址,比如:
    myserver1.com
    myserver2.com
    192.168.1.50
    
  • 2. 调整语言路径:如果你的Windows系统不是英文,需要把脚本中的en-US改成对应语言的文件夹(比如中文系统是zh-CN)
  • 3. 运行脚本:双击批处理文件,等待执行完成,结果会自动保存到同目录下的Printers_Inventory.csv

注意事项

  • 确保运行脚本的Windows账号拥有访问目标服务器打印机的权限
  • 如果打印机没有设置共享名,CSV中对应位置会显示为空的双引号,符合CSV格式规范
  • 脚本会自动处理字段中的逗号,避免CSV文件格式错乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:04:01