我有一个数组:
$results =@()
然后我通过wmi循环使用自定义逻辑并创建我添加到数组的自定义对象:
$item= @{}
$item.freePercent = $freePercent
$item.freeGB = $freeGB
$item.system = $system
$item.disk = $disk
$results += $item
我知道想要对结果数组中的一些东西,比如转换为html。
我可以使用foreach和自定义html写作,但我想使用convertto-html ...
P.S。我可以打印出这样的数据但只有这样:。
foreach($result in $results) {
$result.freeGB
}
答案 0 :(得分:5)
自定义对象创建并不像你想象的那样工作。代码
$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页面(如果您只想创建HTML表而不是整个HTML页面,请使用参数-Fragment
。)< / p>
$results | ConvertTo-Html
更好的方法是像这样管道整个处理:
... | ForEach-Object {
New-Object -Type PSCustomObject -Property @{
'freePercent' = $freePercent
'freeGB' = $freeGB
'system' = $system
'disk' = $disk
}
} | ConvertTo-Html
答案 1 :(得分:2)
您没有创建自定义对象,而是创建哈希表。
假设你至少得到了V3:
[PSCustomObject]@{
freePercent = $freePercent
freeGB = $freeGB
system = $system
disk = $disk
}