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

如何将PowerShell中打印机列表变量转为逗号分隔格式?

解决PowerShell打印机列表输出格式问题

核心问题原因

你当前获取的$PrinterList是包含Name属性的对象数组,而非纯字符串数组,所以关联到PSCustomObject的Printers字段后,输出时会显示对象的结构(@{Name=...})。

两种解决方式

方式一:创建对象前直接处理成字符串

修改打印机列表的获取逻辑,直接提取Name属性值并拼接成逗号分隔的字符串:

# 获取纯字符串格式的打印机名称列表
$PrinterList = @(Get-WmiObject Win32_PNPEntity -ComputerName $Computer) | 
    Where-Object {$_.Name -like "*prt*"} | 
    Select-Object -ExpandProperty Name

# 创建PSCustomObject时直接传入拼接好的字符串
$result = [PSCustomObject]@{
    Printers = $PrinterList -join ', '
}

# 输出结果
$result | Select-Object Printers | Format-Table -AutoSize | Out-String | Write-Host

方式二:针对已存在的$result对象做输出处理

如果已经生成了包含对象数组的$result,可以在输出时通过计算属性转换格式:

# 输出时将Printers字段的对象数组提取Name后拼接
$result | Select-Object @{
    Name = 'Printers'
    Expression = { $_.Printers.Name -join ', ' }
} | Format-Table -AutoSize | Out-String | Write-Host

关键说明

  • Select-Object -ExpandProperty Name:直接提取对象的Name属性值,得到纯字符串数组,而非带属性的对象。
  • -join ', ':将字符串数组拼接成单个逗号分隔的字符串,符合你需要的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:43:13