Powershell แปลง Array of Objects เป็น PSCustomObject

Sep 09 2020

ฉันต้องการแปลงอาร์เรย์ของวัตถุนี้

Name    CIDR
----    ----
sdc-MO  10.92.18.136/20
sdc-RM  10.77.6.34/20

เป็นหนึ่งเดียว [PSCustomObject]

sdc-MO           sdc-RM
-------           -------
{10.92.18.136/20} {10.77.6.34/20}

ช่วยแนะนำวิธีง่ายๆด้วยครับ .. ขอบคุณครับ

คำตอบ

1 MathiasR.Jessen Sep 09 2020 at 18:27

เพิ่มวัตถุแต่ละชิ้นลงในพจนานุกรมประเภทแฮชแท็กหรือพจนานุกรมอื่น ๆ จากนั้นใช้พจนานุกรมเพื่อสร้างวัตถุ (แต่ละรายการจะกลายเป็นคุณสมบัติแยกกัน):

$array = @( [pscustomobject]@{ Name = 'sdc-MO'; CIDR = '10.92.18.136/20' } [pscustomobject]@{ Name = 'sdc-RM'; CIDR = '10.77.6.34/20' } ) # Prepare a new dictionary to hold the properties $newProperties = [ordered]@{}

foreach($inputObject in $array){
  # If we don't already have a property with the given name, 
  # create a new entry in the dictionary
  if(-not $newProperties.Contains($inputObject.Name)){
    $newProperties.Add($inputObject.Name, @())
  }

  # Add the `CIDR` value to the corresponding property name
  $newProperties[$inputObject.Name] += $inputObject.CIDR } $newObject = [pscustomobject]$newProperties

$newObject จะเหมือนกับสิ่งที่คุณอธิบายไว้ในคำถาม:

PS C:\> $newObject

sdc-MO            sdc-RM
------            ------
{10.92.18.136/20} {10.77.6.34/20}