我有一个对象,并对它进行迭代,并将A、B、C相乘。B是一个列表,我在其中使用元素的计数。有时,B不存在。
$sum = ( $arrOfObjects | forEach-Object {$_.A * $_.B.Count * $_.C.Count } | Measure-Object -Sum).Sum只要A,B,C存在,这是可行的。现在,我如何创建一个检查,以确保B存在之前,使用它的计数。
如果B不存在,我想用1作为数字。
发布于 2022-06-14 22:18:11
在https://github.com/PowerShell/PowerShell/blob/master/README.md中,您可以使用三元条件作为简洁的解决方案:
$_.A * ($null -eq $_.B ? 1 : $_.B.Count) * $_.C.Count在PowerShell中,使用$(...)中的if语句( 子表达式运算符 )
$_.A * $(if ($null -eq $_.B) { 1 } else { $_.B.Count }) * $_.C.Count注意:
$_属性的B属性和这样的属性,但是值为$null。$null -eq $_.B替换为
$null -eq $_.psobject.Properties['B'],它使用属性进行反射,以测试具有给定名称的属性的存在。
-这有一个额外的优点,即在测试期间不检索属性的值,在情况上,虽然不是通常情况下,可能比正在执行的反射代价更高。https://stackoverflow.com/questions/72623835
复制相似问题