2010-06-10 9 views
0

j'ai écrit une requête dans Powershell interroger une boîte F5 BIG-IP à travers son API iControl pour ramener l'utilisation du processeur, etc.Powershell - variable découpant en morceaux

En utilisant ce code (voir ci-dessous), je peux retourner les données retour dans un format CSV qui va bien. Cependant, la variable $ csvdata contient toutes les données. Je dois être capable de prendre cette variable et pour chaque ligne diviser chaque colonne de données en une variable séparée.

La sortie ressemble actuellement à ceci: horodatage , "Utilisation" 1276181160,2.3282800000e + 00

Tous les conseils seront les bienvenus

$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) 

Répondre

3

Utilisez la cmdlet ConvertFrom-Csv. Si les données CSV a un en-tête puis:

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

S'il n'y a pas en-têtes dans le texte original, vous pouvez utiliser le paramètre d'en-tête sur ConvertFrom-csv pour les préciser par exemple:

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

maintenant $ csvdata sera des objets ayant chacun les propriétés Timestamp, Cat, Number et NotherNumber. Sortie chacun à une ligne doit être simple:

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

Cela ne fonctionne pas comme je ne suis pas d'importer un fichier csv externe mais juste canalisant les données directes de la variable ReportData de $ dans la variable CSVData de $ pour le transformer d'un tableau d'octets au format csv – Andrew

+1

@Andrew: Utilisez 'ConvertFrom-Csv' dans ce cas. Je suppose que c'est ce que Keith voulait écrire, de toute façon :-) – Joey

+0

Désolé. Je n'utilise pas beaucoup CSV personnellement alors oui, ConvertFrom-Csv est la bonne applet de commande. J'ai mis à jour la réponse pour refléter cela. –

Questions connexes