PowerShell:如何将转换后的GB容量值添加到现有数组中
PowerShell处理NetApp卷容量单位转换与字段添加
方法1:使用Select-Object直接生成计算字段(最简洁)
不需要提前循环,直接通过Select-Object的计算属性一次性完成筛选和单位转换,还能控制小数位数让结果更美观:
# 直接输出包含GB容量的结果,也可以赋值给变量保存 $volumes | Select-Object Name, "Storage VM", Capacity, @{ Name = 'CapacityGB' Expression = { [math]::Round($_.Capacity / 1GB, 2) } # 保留2位小数,可按需调整位数 }
方法2:修改原数组对象,添加新属性
如果需要在原$volumes数组中永久保留CapacityGB字段,用Add-Member给每个对象新增属性:
foreach ($vol in $volumes) { # 给每个卷对象添加CapacityGB属性,值为转换后的GB容量 $vol | Add-Member -MemberType NoteProperty -Name 'CapacityGB' -Value ([math]::Round($vol.Capacity / 1GB, 2)) } # 之后可以直接筛选包含新字段的内容 $volumes | Select-Object Name, "Storage VM", Capacity, CapacityGB
方法3:生成新数组(不修改原数据)
如果不想改动原$volumes数组,可通过循环创建新的自定义对象数组:
$newVolumes = foreach ($vol in $volumes) { [PSCustomObject]@{ Name = $vol.Name "Storage VM" = $vol."Storage VM" Capacity = $vol.Capacity CapacityGB = [math]::Round($vol.Capacity / 1GB, 2) } } # 查看新数组内容 $newVolumes
内容的提问来源于stack exchange,提问作者RobiRobs
相关产品推荐
相关产品推荐

