arrays - 从对象中提取数组并进行计算
问题描述
我有这种对象:
如何提取每个配额并使用 used 进行计算?我试过这个
foreach($quota in $LKPQuotas.quotas) {
foreach($zone in $quota) {
$totalUsed += $zone.used
}
}
但这对我不起作用。$LKPQuotas
等于$quota
and $zone
,我不明白为什么。
我可以使用下面的代码手动进行计算,但我相信还有另一种方法。
foreach($zone in $LKPQuotas.quotas.volume_gigabytes_basic) {
$volume_gigabytes_basic += $zone.used
}
请帮帮我。谢谢你们,注意安全,大流行真的很难。
解决方案
创建测试数据:
$val = {Get-Random -Minimum 1000 -Maximum 2000}
$used = {Get-Random -Minimum 100 -Maximum 900}
$LKPQuotas = [PSCustomObject]@{
quotas = [PSCustomObject]@{
volume_gigabytes_basic = @(
[PSCustomObject]@{value=&$val; used=& $used},
[PSCustomObject]@{value=&$val; used=& $used},
[PSCustomObject]@{value=&$val; used=& $used}
)
volume_gigabytes_fast = @(
[PSCustomObject]@{value=& $val; used=& $used},
[PSCustomObject]@{value=& $val; used=& $used},
[PSCustomObject]@{value=& $val; used=& $used}
)
images_gigabytes = @(
[PSCustomObject]@{used=& $used},
[PSCustomObject]@{used=& $used},
[PSCustomObject]@{used=& $used}
)
compute_cores = @(
[PSCustomObject]@{sockets=1; cores=8},
[PSCustomObject]@{sockets=4; cores=4}
)
}
}
$LKPQuotas | ConvertTo-Json
测试数据输出:
{
"quotas": {
"volume_gigabytes_basic": [
"@{value=1225; used=123}",
"@{value=1746; used=274}",
"@{value=1747; used=409}"
],
"volume_gigabytes_fast": [
"@{value=1252; used=404}",
"@{value=1325; used=438}",
"@{value=1048; used=820}"
],
"images_gigabytes": [
"@{used=613}",
"@{used=690}",
"@{used=278}"
],
"compute_cores": [
"@{sockets=1; cores=8}",
"@{sockets=4; cores=4}"
]
}
}
处理测试数据并获得结果:
$valprops = @{N='value'; E={[uint32]$_.value}},
@{N='used'; E={[uint32]$_.used}}
$LKPQuotas.quotas.psobject.Properties |
ForEach-Object -Process {$prop = $_.Name
$psobj = [ordered]@{Name=$prop}
$LKPQuotas.quotas.$prop |
Select-Object -Property $valprops |
Measure-Object -Property value,used -Sum |
ForEach-Object -Process {$psobj[$_.Property]=$_.Sum}
[PSCustomObject]$psobj}
结果输出:
Name value used
---- ----- ----
volume_gigabytes_basic 4718 806
volume_gigabytes_fast 3625 1662
images_gigabytes 0 1581
compute_cores 0 0
推荐阅读
- mysql - 来自另一列TIMESTAMP sql的默认时间如何
- java - 没有得到预期的输出多线程阻塞队列
- android - React Native (Android) - 应用在“打开方式”列表中出现两次
- r - 如何预先制作如下图?
- reactjs - 当我单击返回主页时,IonTab 无法正常工作,它没有刷新到相应的选项卡
- c++ - 如何更改 ADXL355 的 ODR 设置
- microsoft.extensions.configuration - 如何使用 microsoft.extensions.configuration 从配置文件中读取复杂对象
- python - 打印没有引号的字典?
- javascript - 从 CLI 生成的新 vue 3 项目的单元测试中出错
- ios - MAILCORE2 - 无法建立与服务器的稳定连接