Powershell - разбиение переменной на куски - PullRequest
0 голосов
/ 10 июня 2010

Я написал в Powershell запрос, опрашивающий F5 BIG-IP box через его iControl API для восстановления загрузки процессора и т. Д.

Используя этот код (см. Ниже), я могу вернуть данные обратно в формат CSV, что нормально. Однако переменная $ csvdata содержит все данные. Мне нужно иметь возможность взять эту переменную и для каждой строки разбить каждый столбец данных на отдельную переменную.

Вывод в настоящее время выглядит так: метка времени, «Использование» 1276181160,2.3282800000e + 00

Любой совет будет приветствоваться

$SystemStats = (Get-F5.iControl).SystemStatistics 

### Allocate a new Query Object and add the inputs needed
$Query = New-Object -TypeName iControl.SystemStatisticsPerformanceStatisticQuery
$Query.object_name = $i
$Query.start_time = $startTime
$Query.end_time = 0
$Query.interval = $interval
$Query.maximum_rows = 0 

### Make method call passing in an array of size one with the specified query
$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)

1 Ответ

3 голосов
/ 10 июня 2010

Используйте командлет ConvertFrom-Csv.Если данные CSV имеют заголовок, то:

$csvdata = $ASCII.GetString($ReportData[0].statistic_data) | ConvertFrom-Csv

Если в исходном тексте нет заголовков, вы можете использовать параметр Header в ConvertFrom-Csv, чтобы указать их, например:

$csvdata = ... | ConvertFrom-Csv -Header Timestamp,Cat,Number,NotherNumber

Теперь $ csvdata будет объектами, каждый со свойствами Timestamp, Cat, Number и NotherNumber.Вывод каждого в строку должен быть простым:

$csvdata | Foreach {$_.Timestamp; $_.Cat; $_.Number; $_.NotherNumber}
...