2012-05-06 8 views
6

Hier ist mein Code:Powershell Zugabe Werte zusammen

clear-host 

function isNumeric ($x) { 
try { 
    0 + $x | Out-Null 
    return $true 
} catch { 
    return $false 
} 
} 

function output-file ($ave, $high, $low, $date) 
{ 
write-output "Programer: Oday Sawaqed" 
write-output "Class: CIS 124" 
write-output "PowerShell Assignmnent" 
write-output "" 
Write-output "" 
write-output " Current Date     Average    Highest      Lowest" 
write-output " $date    $ave     $high     $low " 
} 


$array = @() 
$hold 
$n = 1 

do { 
$hold = read-host "number $n" 
if (isNumeric $hold -eq $true){ 
if (999 -ne $hold) { 
$array += $hold 
$n = $n + 1 
} 
else 
{ 
clear-host 
write-host "Thank you." 
write-host "The numbers you entered are:" $array 
write-host "Please select a file name to save the output:" 
$fileName = Read-host 

$date = get-date -format "dddd, MMMM d, yyyy" 
$array = $array | Sort-Object 
$ave = 
$high = $array | Select-Object -last 1 
$low = $array | Select-Object -first 1 

output-file $ave $high $low $date | Out-File c:\$fileName.txt 
} 
} 
else { 
write-host "Please enter a numeric value" 
} 
} 
while (999 -ne $hold) 

Jetzt ist der Code funktioniert perfekt, ich kann einfach nicht herausfinden, wie die Werte in meinem Array zu addieren, um den Durchschnitt zu berechnen. Kann mir bitte jemand helfen oder mir einen Tipp geben! ich weiß, dass ich die Werte zusammen hinzufügen muss und dann be $ n teilen, ich weiß nur nicht, wie man die Werte addiert.

Antwort

20

Durchschnitt berechnen Sie Measure-Object Cmdlets verwenden können:

($array | Measure-Object -Average).average 
+0

Vielen Dank :) Ich wusste, dass Sie es auf diese Weise tun können, außer dass ich .ave statt des Durchschnitts gesetzt wurde und das ist, warum es nie funktioniert hat. Ich bin immer noch ein Noob. aber ja, danke! –

+2

+1, ich suchte nach einem Array zu summieren. Und Sie haben mich daran erinnert, dass measure-object auch viele mathematische Aufgaben erledigen würde. –

2

Ein Weg, ich found die Zugabe zu tun wäre, so etwas wie dieses:


$sum = $array -join '+' 
Invoke-Expression $sum 

Die Ausgabe von $sum wird einfach gehen für Sie die „+“ und dann invoke-expression tatsächlich die Mathematik hinzuzufügen. So würde die Ausgabe in etwa so aussehen:


$sum 
1+2+3+4+5+6+7+8+9 
Invoke-Expression $sum 
45 
+0

Was ist mit dem ersten Verfahren in der Verbindung aufgeführt, die „Maßnahme-Objekt“ verwendet die Summe zu berechnen ? –

+0

das hat auch funktioniert. Vielen Dank –