我在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)
答案 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}