在以下代码中,大多数时间都花在
在下面的代码中,我选择
$v = $proc.$columnName
这行上,我想知道是否有一种方法可以加速查找对象成员的值。在下面的代码中,我选择
$objs
作为get-process
的结果,但是在我的情况下,$objs
可以是任何类型的对象数组,因此需要动态查找对象的成员。$objs= get-process
$columnNames = @()
foreach ($member in ($objs | get-member -memberType property, noteproperty)) {
[string]$name = $member.name
$columnNames += $name
}
[Int64 ] $sum = 0
[string] $columnName = ''
foreach ($obj in $objs) {
foreach ($columnName in $columnNames) {
$v = $obj.$columnName
# $v = $obj.psObject.members.Item($columnName).value
if ($v -eq $null) {
}
elseif ($v -is [System.IntPtr]) {
$sum = $sum + ($v -as [int64] )
}
elseif ($v -is [System.Int64] -or $v -is [System.Int32]) {
$sum = $sum + $v
}
}
}
"sum = $sum"