Sumando un array de objetos en Powershell.
Tengo una matriz de objetos que contienen valores enteros.
$row = new-Object PSObject # crear un nuevo objeto para contener sus datos
$row | Add-Member -Name “sheet_number” -MemberType NoteProperty -Value 1
$row | Add-Member -Name “frame_number” -MemberType NoteProperty -Value 2
$row | Add-Member -Name “sheet_height” -MemberType NoteProperty -Value 1200
$row | Add-Member -Name “frame_height” -MemberType NoteProperty -Value 1200
$row | Add-Member -Name “frame_width” -MemberType NoteProperty -Value 3300
$row | Add-Member -Name “orientation” -MemberType NoteProperty -Value 0
$frames += $row
Esto está en un bucle for destinado a iterar varias veces. Pero la propiedad sheet_number solo debería tener un par de valores. Lo que necesito es sumar los valores en frame_width donde sheet_number es el mismo.
Pseudo código:
sheet_width = suma de frame_width donde sheet number = 1
davy.ai
Para lograr esto, se puede utilizar el cmdlet
Where-Object
para filtrar los marcos que coinciden con el número de hoja deseado y luego utilizar el cmdletMeasure-Object
para sumar sus valores de ancho de marco. El código de PowerShell para esto sería:En este ejemplo, he agregado 10 marcos al arreglo
$frames
mediante un bucle, con 3 números de hoja diferentes y marcos de ancho variable. Luego, he establecido$sheet_number
en 1 para filtrar los marcos solo con ese número de hoja.Para sumar los valores de ancho de marco para los marcos seleccionados, he utilizado
Where-Object
para filtrar los marcos en función de su propiedad de número de hoja y luego he enviado el resultado aMeasure-Object
con el parámetro-Property
establecido en frame_width y-Sum
para calcular la suma.Finalmente, he obtenido el resultado como una cadena que incluye el número de hoja y su ancho correspondiente.