2017-03-29 1 views
0

Ich bin vertraut mit der Verwendung der "measure-object" -Funktion zu zählen, und erhalten Durchschnittswerte, usw., aber ich habe einige Schwierigkeiten damit zu bekommen die durchschnittliche auf Daten basieren, die in CSV als Prozentsatz (%)Measure-Objekt - Durchschnitt für Werte in Prozent (%) gespeichert

Platform Cap Used % 
P1   0% 
P2   18% 

I ursprünglich enthaltenen Logik in dem Skript, das die CSV erzeugt speichern in% unter Verwendung der normalen Verfahren gespeichert wird "{0: P0}"

Wenn ich nun versuche, ein Measure-Objekt-Durchschnitt auf dem Array "Cap Used%" auszuführen, erhalte ich immer wieder den folgenden Fehler:

Measure : Input object "" is not numeric. 
At line:1 char:36 
+ $TempData | Select $_"Cap used %" |Measure -average 
+         ~~~~~~~~~~~~~~~~ 
+ CategoryInfo   : InvalidType: (:PSCustomObject) [Measure-  
Object],PSInvalidOperationException 
      + FullyQualifiedErrorId :NonNumericInputObject,Microsoft.PowerShell.Commands.MeasureObjectCommand 

Ich bin in der Lage, die gleichen Daten über den folgenden Code zu sortieren, aber ich bin nicht in der Lage es durch Maß-Objekt -Durchschnittliche

$TempData | Select {[int]($_."Cap Used %" -replace '%')} 

ich wahrscheinlich die Daten ohne das% speichern könnte laufen , aber ich würde es lieber intakt halten. Gibt es einen ez Weg, um eine Reihe von Prozentsätzen zu summieren und den durchschnittlichen% zu erhalten? Wenn ich die Daten in Excel importiere und die Spalte wähle, wird das erwartete Durchschnittsergebnis angezeigt, daher weiß ich, dass die Daten gut sind. Ich glaube jedoch, dass Excel eine zusätzliche Logik eingebaut hat, um das korrekte Datenformat

automatisch zu erkennen

jede Hilfe ist

geschätzt

Antwort

1

In general, when posting an example with xml or csv data, it is helpful to use here-strings to represent the data instead of referencing a file that others do not have.

Next Code-Schnipsel zurück 8 wie erwartet.

[email protected]' 
Platform,"Cap Used %" 
P1,0% 
P2,18% 
P3,6% 
'@ 

$TempData = $hereStr | ConvertFrom-Csv 
(($TempData."Cap Used %").Replace('%','') | Measure-Object -Average).Average 
+0

Vielen Dank! Ich werde diesen Code in Kürze ausprobieren und zurück melden – Kenny

+0

Bestätigte Funktion! Danke nochmal, JosefZ – Kenny