Powershell Select-Object из массива не работает - PullRequest
0 голосов
/ 16 июня 2010

Я пытаюсь разделить значения в массиве, чтобы я мог передать их другой функции.

Использую функцию select-Object в цикле for, чтобы пройти каждую строку и разделить поля отметок времени и значений.

Однако, не имеет значения, что я делаю, только код нижеотображает первую переменную 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 Ответ

1 голос
/ 16 июня 2010

Позвольте мне немного изменить код обработки, если это поможет.

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

Он выдаст несколько иной результат, но с ним лучше работать. В результате получаются объекты со свойствами Utilization и TimeStamp. Вы можете передать их другой функции, как вы упомянули.

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


Если мой обновленный код не будет работать: действительно ли свойство TimeStamp заполнено каким-либо значением?

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