可直接用PowerShell批量导出打印服务器上所有已共享的打印机列表,核心命令为Get-Printer | Where-Object {$_.Shared -eq $true} | Select-Object Name, ShareName, PortName, DriverName, Location, Comment | Export-Csv,支持本机及远程多服务器导出,并可扩展导出端口与驱动详情用于迁移归档。
直接用 powershell 批量导出打印服务器上所有已共享的打印机列表,核心是调用 get-printer 并筛选共享状态,无需图形界面,结果可导出为 csv 或文本供归档、审计或迁移使用。
导出本机打印服务器的全部共享打印机
确保你在打印服务器(即已安装“打印和文档服务”角色的 Windows Server 或启用了共享打印的 Win10/11 主机)上以管理员身份运行 PowerShell:
- 执行命令:
Get-Printer | Where-Object {$_.Shared -eq $true} | Select-Object Name, ShareName, PortName, DriverName, Location, Comment | Export-Csv -Path "$env:USERPROFILE\Desktop\SharedPrinters.csv" -NoTypeInformation -Encoding UTF8 - 该命令只提取真正启用共享(
Shared = True)的打印机,排除本地仅安装未共享的设备 - 输出字段包含共享名(
ShareName)、端口、驱动、位置与备注,便于识别和复用
导出远程打印服务器的共享打印机列表
若需从管理机批量获取多台打印服务器的共享列表,可用 Invoke-Command 远程执行:
- 先准备服务器清单(如
servers.txt,每行一个主机名或 IP) - 运行:
Get-Content "servers.txt" | ForEach-Object { Invoke-Command -ComputerName $_ -ScriptBlock { Get-Printer | Where-Object {$_.Shared} | Select-Object PSComputerName, Name, ShareName, PortName, DriverName } } | Export-Csv "$env:USERPROFILE\Desktop\RemoteSharedPrinters.csv" -NoTypeInformation -Encoding UTF8 - 自动添加
PSComputerName字段,明确每台打印机所属服务器
补充:导出含驱动包与端口详情的完整配置
如需进一步归档用于重建或迁移,可结合 Get-PrinterPort 和 Get-PrinterDriver:
- 导出所有共享打印机 + 对应端口信息:
Get-Printer | Where-Object {$_.Shared} | ForEach-Object { $p = $_; $port = Get-PrinterPort -Name $p.PortName; [PSCustomObject]@{ PrinterName = $p.Name; ShareName = $p.ShareName; PortName = $port.Name; PortAddress = $port.PrinterHostAddress; Driver = $p.DriverName } } | Export-Csv "$env:USERPROFILE\Desktop\SharedPrinters_WithPort.csv" -NoTypeInformation -Encoding UTF8 - 此方式将 IP 端口地址、驱动名称等关键部署参数一并保留,避免后续手动查漏
不复杂但容易忽略:导出前确认目标服务器已启用 PowerShell 远程处理(Enable-PSRemoting),且当前用户对远程服务器有本地管理员权限。共享打印机列表本身不含凭据或敏感配置,适合常规运维归档。


















