gpt4 book ai didi

powershell - 有没有办法加快 ps-objects 中的动态成员查找

转载 作者:行者123 更新时间:2023-12-04 17:10:05 24 4
gpt4 key购买 nike

在下面的代码中,大部分时间花在 $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"

最佳答案

也许有更多方法可以加快速度,但下面我已经删除了不必要的部分:

$objs= Get-Process

$columnNames = ($objs | Get-Member -MemberType property, noteproperty).Name

[Int64 ] $sum = 0
foreach ($obj in $objs) {
foreach ($v in $columnNames) {
if ($obj.$v -as [int64]) { $sum += [int64]$obj.$v }
}
}

"sum = $sum"

关于powershell - 有没有办法加快 ps-objects 中的动态成员查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69656631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com