Это два способа сделать это с моей головы:
$exitCodes = @{success=12; error=1; warning=0; unknown=0}
$i = 0; $exitCodes.Values | ForEach-Object {$i += $_}; $i
($exitCodes.Values | Measure-Object -Sum).Sum
Если $exitCodes
на самом деле является объектом, а не хеш-таблицей (правка: похоже, это действительно так, простопо тому, как вы обращались к свойствам), попробуйте нечто подобное, перечислив свойства с помощью скрытого свойства .psobject
.
$exitCodes = [pscustomobject]@{success=12; error=1; warning=0; unknown=0}
($exitCodes.psobject.Properties.Name | ForEach-Object { $exitCodes.$_ } | Measure-Object -Sum).Sum
#or use $i += etc.
Если $exitCodes
имеет много дополнительных свойств, вы также можете фильтровать на основе дополнительныхинформация возвращена .psobject
.Пример:
($exitCodes.psobject.Properties | Where-Object {$_.MemberType -eq 'NoteProperty'}).Name