Добавить значения свойств объекта в PowerShell, не обращаясь к каждому свойству по имени - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть API, который возвращает коды выхода скриптов.Я сохраняю возвращаемый объект в переменной с именем $ exitCodes.

$exitCodes

даст объект, подобный этому:

@{success=12; error=1; warning=0; unknown=0}

Моя цель - иметь возможность подсчитывать значения каждогосвойство $ exitCodes без выполнения чего-либо подобного:

if ($exitCodes.success + $exitCodes.error + $exitCodes.warning + $exitCodes.unknown -gt 0)
{
    do something
}

Есть ли способ получить значения каждого свойства и сложить их вместе, не вызывая каждое свойство по имени?Для этого примера предположим, что каждое свойство будет иметь значение того же типа.

1 Ответ

0 голосов
/ 28 сентября 2018

Это два способа сделать это с моей головы:

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...