Используйте Measure-Object -Average
как это:
# Constructing test data
# In your case you probably use Import-CSV instead
# If Import-CSV was used, no need to use ConvertFrom-CSV
$data = @"
SummaryMonth;OSType;AVERAGE_of_Availability
10/7/2019 10:30;Unix;100
10/7/2019 10:30;Network;99.95039683
10/7/2019 10:30;Unix;100
10/7/2019 10:30;Unix;99.8015873
10/7/2019 10:30;Network;100
10/7/2019 10:30;Network;100
10/7/2019 10:30;Windows;99.95037221
10/7/2019 10:30;Network;100
10/7/2019 10:30;Unix;100
10/7/2019 10:30;Windows;100
10/7/2019 10:30;storage;100
"@ | ConvertFrom-CSV -Delimiter ';'
# Grouping data
$grouppedData = $data | Group-Object OSType
# Getting desired data
$result = $grouppedData | Select-Object Name,@{name="Avg";e={($_.Group.AVERAGE_of_Availability | Measure-Object -Average).Average}}
# Output the result
$result
Вывод будет:
Name Avg
---- ---
Unix 99.950396825
Network 99.9875992075
Windows 99.975186105
storage 100
Объяснение:
В вашем Select-Object
Вы должны использовать вычисленное свойство, чтобы построить желаемое значение в (в вашем случае среднее значение AVERAGE_of_Availability
). Поскольку Measure-Object
возвращает значение в формате, подобном
Count : 1
Average : 100
Sum :
Maximum :
Minimum :
Property :
, вам необходимо получить доступ только к свойству Average
этого объекта. Вы можете сделать это с помощью точечного обозначения: ($object | Measure-Object -Average).Average
. В вашем случае вместо $object
вы помещаете массив AVERAGE_of_Availability
значений для правильных OSType
.
Ссылки:
Подробнее о вычисляемом свойстве (только один пример статьи) можнонайдено здесь .