PowerShell技术问询:多打印服务器活跃打印机CSV输出加间隔空行
实现多服务器活跃打印机CSV输出并添加服务器间空行分隔
核心思路
要实现不同服务器结果间的空行分隔,不建议在远程脚本中直接追加CSV文件(会有并发写入风险,且难以精准控制空行插入时机),更稳妥的方式是:
- 远程收集每台服务器的活跃打印机数据,返回至本地
- 本地统一处理数据,在不同服务器的结果之间插入空行(视觉分隔用,注意:空行不符合标准CSV规范,但Excel等工具可以正常识别)
- 最后将所有数据导出到目标CSV文件
优化后的代码实现
第一步:修改远程脚本块,只返回数据不直接导出
# 定义远程执行的脚本块,仅返回活跃打印机对象,不直接写文件 $ActivePrinterResult = { # 获取所有打印机的关键属性 $printers = Get-Printer | Select-Object portName, DriverName, Comment # 遍历打印机,筛选活跃设备并构造输出对象 foreach ($printer in $printers) { # 仅执行一次Test-Connection,同时获取连通性和IP $connectionTest = Test-Connection $printer.portname -Count 1 -ErrorAction SilentlyContinue if ($connectionTest) { [pscustomobject]@{ FilePrinterServer = $env:computername PrinterName = $printer.Portname IPV4Address = $connectionTest.IPV4Address.ToString() PrinterDriverName = $printer.DriverName PrinterComment = $printer.Comment } } else { # 将不响应的打印机记录到单独文件(远程写入,确保共享路径有权限) "$($printer.Portname) on $($env:computername) not responding" | Out-File -FilePath '\\Testing01\TestFolder$\NotRespondingPrinter.csv' -Append -Encoding utf8 } } }
第二步:本地执行远程命令,收集所有数据并插入分隔行
# 读取服务器列表,执行远程命令并收集结果 $allResults = Invoke-Command -ComputerName (Get-Content Serverlist.txt) -ScriptBlock $ActivePrinterResult -Credential $Credentials # 按服务器分组,插入空行分隔 $finalOutput = @() $serverGroups = $allResults | Group-Object -Property FilePrinterServer foreach ($group in $serverGroups) { # 添加当前服务器的所有打印机数据 $finalOutput += $group.Group # 添加一行空对象(所有属性为空,实现CSV中的空行效果) $finalOutput += [pscustomobject]@{ FilePrinterServer = $null PrinterName = $null IPV4Address = $null PrinterDriverName = $null PrinterComment = $null } } # 移除最后多余的空行(可选,根据需求决定) $finalOutput = $finalOutput | Select-Object -SkipLast 1 # 导出到CSV文件 $finalOutput | Export-Csv -Path '\\Testing01\TestFolder$\Outfile.CSV' -NoTypeInformation -Encoding utf8
关键说明
- 减少远程文件操作:将数据统一返回本地处理,避免多服务器同时写入同一CSV文件的并发冲突
- 优化Test-Connection调用:原脚本执行两次Test-Connection,修改后仅执行一次,提升效率
- 空行实现方式:通过添加属性全为空的自定义对象,在CSV中生成空行,Excel打开后会显示为空白行,满足管理层视觉区分需求
- 编码问题:添加
-Encoding utf8参数,避免中文乱码
内容的提问来源于stack exchange,提问作者Jay Bala
相关产品推荐
相关产品推荐

