как динамически создать pscustomobject из arraylist? - PullRequest
0 голосов
/ 04 июля 2019

это сообщение является дополнительным к этой теме здесь

В основном у меня есть 2 сценария

script1 имеет следующее:

$exportObject = New-Object System.Collections.ArrayList
$exportObject | Select-Object

вscript2, я вызываю script1, чтобы что-то сделать, и отправляю вывод в -ov

& "script1.ps1" -ov $outputValue
$outputValue

, вот что я получаю

op

Я хотел бы преобразовать $outValue в pscustomobject динамически , потому что для ответа Тео (по ссылке выше) требуется pscustomobject, а мой $outValue является списком массивов /select object ...

в основном pscustomobject будет содержать значения, подобные этим, но это не динамическое и вместо этого жесткое кодирование ключей / значений.

$outValue = @(
    [PSCustomObject]@{
        'Server' = 'Server1.com'
        'Cube' = 'Cube1'
        'Connection Details' = 'Connection changed!'
    }
)

Я ищу что-то вроде этого:

$outValue = $outValue | foreach-object () { @(
    [PSCustomObject]@{
        $key = $value
    }
}
)

1 Ответ

1 голос
/ 04 июля 2019

Это будет очень изменчиво, но работает на нескольких машинах, которые я протестировал.

Это должно помочь вам создать "динамические" массивы с PSCustomObject членами.

$array = @()
Foreach($Object in $exportObject ) {
    $i = -1
    $Goal = -($Object | gm | Where-Object {$_.MemberType -like "noteproperty"}).count

    $temp = New-Object pscustomobject
    Do {
        $temp | Add-Member -MemberType NoteProperty -Name (($Object | gm)[$($i)].Name) -Value ($Object."$(($Object | gm)[$($i)].Name)")
        $i--
    }While($i -ge $Goal)

    $array += $temp
}

Это, очевидно, не лучшая практика, но быстро и грязно, как большинство вещей делается в моем опыте.

Затем используйте $array в другой функции, предоставленной Тео, ConvertTo-HTMLTable $array

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...