Пользовательский объект не работает, как вы, кажется, думают. Код
$item= @{}
$item.freePercent = $freePercent
$item.freeGB = $freeGB
$item.system = $system
$item.disk = $disk
создает хэш-таблицу, а не пользовательский объект, так что вы создаете список хеш-таблицы.
Демонстрация:
PS C:\>$results = @()
PS C:\>1..3 | % {
>> $item = @{}
>> $item.A = $_ + 2
>> $item.B = $_ - 5
>> $results += $item
>>}
>>
PS C:\>$results
Name Value
---- -----
A 3
B -4
A 4
B -3
A 5
B -2
PS C:\>$results[0]
Name Value
---- -----
A 3
B -4
Изменить создание объектов для этого:
$item = New-Object -Type PSCustomObject -Property @{
'freePercent' = $freePercent
'freeGB' = $freeGB
'system' = $system
'disk' = $disk
}
$results += $item
так что вы получите нужный список объектов:
PS C:\>$results = @()
PS C:\>1..3 | % {
>> $item = New-Object -Type PSCustomObject -Property @{
>> 'A' = $_ + 2
>> 'B' = $_ - 5
>> v}
>> $results += $item
>>}
>>
PS C:\>$results
A B
- -
3 -4
4 -3
5 -2
PS C:\>$results[0]
A B
- -
3 -4
Кроме того, добавление в массив в цикл должен работать плохо. Лучше всего «эхо» объекты внутри цикла и присвоить результат переменной списка:
$results = foreach (...) {
New-Object -Type PSCustomObject -Property @{
'freePercent' = $freePercent
'freeGB' = $freeGB
'system' = $system
'disk' = $disk
}
}
трубы $results
в ConvertTo-Html
, чтобы преобразовать список в виде HTML-страницы (используйте параметр -Fragment
, если вы хотите создать просто HTML-таблица вместо всей HTML-страницы).
$results | ConvertTo-Html
Еще лучше было бы трубопровода вся ваша обработка, как это:
... | ForEach-Object {
New-Object -Type PSCustomObject -Property @{
'freePercent' = $freePercent
'freeGB' = $freeGB
'system' = $system
'disk' = $disk
}
} | ConvertTo-Html
нормально, и после того, как я называю convertot-HTML? – e4rthdog
Просто соедините коллекцию объектов с ConverTo-HTML: $ results | ConvertTo-HTML – mjolinor