Powershell - 将变量拆分成块

时间:2010-06-10 15:17:12

标签: powershell variables split

我在Powershell中编写了一个查询,通过它的iControl API查询F5 BIG-IP盒,以恢复CPU使用率等。

使用此代码(见下文)我可以将数据恢复为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 个答案:

答案 0 :(得分:3)

使用ConvertFrom-Csv cmdlet。如果CSV数据有标题,则:

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

如果原始文本中没有标题,您可以使用ConvertFrom-Csv上的Header参数来指定它们,例如:

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

现在$ csvdata将是每个都具有Timestamp,Cat,Number和NotherNumber属性的对象。每个输出到一行应该很简单:

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