2010-06-10 1 views
0

조각으로 분할 변수가이 코드를 사용하는 등 CPU 사용량파워 쉘 - 나는 그것을 통해 F5 BIG-IP 상자를 심문 PowerShell에서 쿼리를 작성했습니다

을 다시 가져 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) 

답변

3

사용 ConvertFrom-Csv cmdlet을 환영 할 것이다. 이제

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

:

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

원본 텍스트에 헤더가없는 경우, 예를 들어 그들을 지정은 ConvertFrom-CSV의 헤더 매개 변수를 사용할 수 있습니다 다음 CSV 데이터는 헤더가있는 경우 $ csvdata는 Timestamp, Cat, Number 및 NotherNumber 속성을 가진 객체입니다. 출력 라인에 각각 단순해야한다 :

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

가 작동하지 않는 내가 외부 CSV 파일을 가져 있지만 단지에서 그것을 켜은 $ csvdata 변수에 $의 ReportData에 변수에서 직접 데이터를 배관하고 있지 않다으로 바이트 배열을 csv 형식으로 변환 – Andrew

+1

@ Andrew :이 경우에는'ConvertFrom-Csv'를 사용하십시오. Keith가 쓰고 싶었던 것 같습니다. – Joey

+0

죄송합니다. 개인적으로 CSV를 많이 사용하지 않으므로 ConvertFrom-Csv가 적절한 cmdlet입니다. 나는 그것을 반영하기 위해 답을 업데이트했다. –

관련 문제