首页 > 解决方案 > 从多值属性数组创建对象

问题描述

我正在使用 Auvik Powershell 模块,并且某些命令的返回中有一些多值。

将其转换为单个值对象的最佳方法是什么。

type   id                 attributes                                            
----   --                 ----------                                            
tenant 53337108651709 @{domainPrefix=50waters; tenantType=client}            
tenant 58897678651709 @{domainPrefix=BillAve; tenantType=client} 

==================================================== ======= 像这样======

type   id               domain prefix    tenant type
----    ----                   ----            ------
tenant 58897678651709         BillAve          client
tenant 53337108651709       50waters          client

标签: arrayspowershell

解决方案


还有更多方法,您可以在以下代码片段中看到其中一些方法:

'--- Original object'
$objectOrig | Out-Default

'--- Flattened using a `foreach` loop'
$ObjectFlat = foreach ( $line in $objectOrig ) {
    [pscustomobject]@{
        type=$line.type
        id=$line.id
        domainPrefix=$line.attributes.domainPrefix
        tenantType=$line.attributes.tenantType
    }
}
$ObjectFlat | Out-Default

'--- Flattened using calculated properties'
$ObjectFlaX = $objectOrig | Select-Object -Property type, id,
    @{Name='domainPrefix'; Expression={$_.attributes.domainPrefix}},
    @{Name='tenantType'  ; Expression={$_.attributes.tenantType}}
$ObjectFlaX | Out-Default

输出62503286.ps1

--- Original object

type               id attributes
----               -- ----------
tenant 53337108651709 @{domainPrefix=50waters; tenantType=client}
tenant 58897678651709 @{domainPrefix=BillAve; tenantType=client}


--- Flattened using a `foreach` loop

type               id domainPrefix tenantType
----               -- ------------ ----------
tenant 53337108651709 50waters     client
tenant 58897678651709 BillAve      client


--- Flattened using calculated properties

type               id domainPrefix tenantType
----               -- ------------ ----------
tenant 53337108651709 50waters     client
tenant 58897678651709 BillAve      client

推荐阅读