我试图在数组中分隔值,以便我可以将它们传递给另一个函数。
使用for循环中的select-Object函数遍历每一行并分隔时间戳和值字段。
但是,无论我做什么,下面的代码只显示每行的第一个select-object变量。第二个select-object命令似乎不起作用,因为我的输出是6行中每一行的空行。
关于如何获得两个值的任何想法
$ReportData = $SystemStats.get_performance_graph_csv_statistics( (,$Query) )
### Allocate a new encoder and turn the byte array into a string
$ASCII = New-Object -TypeName System.Text.ASCIIEncoding
$csvdata = $ASCII.GetString($ReportData[0].statistic_data)
$csv2 = convertFrom-CSV $csvdata
$newarray = $csv2 | Where-Object {$_.utilization -ne "0.0000000000e+00" -and $_.utilization -ne "nan" }
for ( $n = 0; $n -lt $newarray.Length; $n++)
{
$nTime = $newarray[$n]
$nUtil = $newarray[$n]
$util = $nUtil | select-object Utilization
$util
$tstamp = $nTime | select-object timestamp
$tstamp
}
答案 0 :(得分:1)
如果有帮助,请稍微修改处理代码。
$csv2 |
Where-Object {$_.utilization -ne "0.0000000000e+00" -and $_.utilization -ne "nan" } |
Select-Object Utilization,TimeStamp
它会产生稍微不同的输出,但这应该更适合使用。 结果是具有属性Utilization和TimeStamp的对象。您可以将它们传递给另一个函数。
通常最好使用管道而不是循环。您不需要关心索引,它可以使用数组以及标量值。
如果我的更新代码不起作用:TimeStamp
属性是否真的填充了任何值?