数组中的Powershell Select-Object无法正常工作

时间:2010-06-16 10:16:30

标签: powershell arrays

我试图在数组中分隔值,以便我可以将它们传递给另一个函数。

使用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

    }

1 个答案:

答案 0 :(得分:1)

如果有帮助,请稍微修改处理代码。

$csv2 | 
  Where-Object {$_.utilization -ne "0.0000000000e+00" -and   $_.utilization -ne "nan" } |
  Select-Object Utilization,TimeStamp

它会产生稍微不同的输出,但这应该更适合使用。 结果是具有属性Utilization和TimeStamp的对象。您可以将它们传递给另一个函数。

通常最好使用管道而不是循环。您不需要关心索引,它可以使用数组以及标量值。


如果我的更新代码不起作用:TimeStamp属性是否真的填充了任何值?