如何在PowerShell中合并两个同结构表(非SQL连接方式)
合并同结构PowerShell对象集合的方法
先修正原查询的语法错误
你的原命令存在两处问题:
Namespace参数的引号未闭合,且select语句后多了冗余逗号- 属性名拼写错误:
Manufacture应为Manufacturer(Win32_PnPEntity的正确属性名)
修正后的两个查询:
# 查询1:匹配CellContents的设备 $table1 = Get-WmiObject -Namespace "root\CIMV2" -Class "Win32_PnPEntity" ` | Where-Object Name -Like "*CellContents*" ` | Select-Object Description, Manufacturer, Name # 查询2:匹配TellContents的设备 $table2 = Get-WmiObject -Namespace "root\CIMV2" -Class "Win32_PnPEntity" ` | Where-Object Name -Like "*TellContents*" ` | Select-Object Description, Manufacturer, Name
合并两个集合的简单方法
PowerShell中,同结构的对象集合本质是数组,直接用+运算符即可合并:
# 合并两个表 $mergedTable = $table1 + $table2 # 输出合并结果 $mergedTable
也可以直接将两个查询的结果放入数组表达式,一步完成:
$mergedTable = @( Get-WmiObject -Namespace "root\CIMV2" -Class "Win32_PnPEntity" | Where-Object Name -Like "*CellContents*" | Select-Object Description, Manufacturer, Name Get-WmiObject -Namespace "root\CIMV2" -Class "Win32_PnPEntity" | Where-Object Name -Like "*TellContents*" | Select-Object Description, Manufacturer, Name )
可选:去重合并结果
如果两个集合存在重复行,可通过Sort-Object -Unique去重:
$mergedTable = ($table1 + $table2) | Sort-Object Description, Manufacturer, Name -Unique
为什么你之前的方法无效
UNION是SQL语法,PowerShell不支持该运算符- PowerShell的数组是固定大小的,没有
Append方法,你混淆了其他语言的API用法
内容的提问来源于stack exchange,提问作者Jose Serra
相关产品推荐
相关产品推荐

