【问题标题】:powershell export-csv sum column per each row每行的powershell export-csv总和列
【发布时间】:2018-12-12 19:03:29
【问题描述】:

我写了这个脚本来输出一个表格格式的文件:

$VMs = Get-AzureRmVM
$vmOutput = $VMs | ForEach-Object { 
    [PSCustomObject]@{
        "VM Name" = $_.Name
        "VM Type" = $_.StorageProfile.osDisk.osType
        "VM Profile" = $_.HardwareProfile.VmSize
        "VM OS Disk Size" = $_.StorageProfile.OsDisk.DiskSizeGB
        "VM Data Disk Size" = ($_.StorageProfile.DataDisks.DiskSizeGB) -join ','
    }
}

$vmOutput  | export-csv C:\***\data.csv -delimiter ";" -force -notypeinformation 

是否有可能为每个对象汇总“VM 数据磁盘大小”?我使用 -join 参数只是因为没有正确导出数据,因为每个 vm 有多个数据磁盘。

【问题讨论】:

    标签: powershell azure csv export-csv


    【解决方案1】:

    如果您有一个数字数组并且想要对它们求和,请使用:

    ($NumArray | Measure -Sum).Sum

    在你的情况下是:

    "VM Data Disk Size" = ($_.StorageProfile.DataDisks.DiskSizeGB | Measure -Sum).Sum

    MeasureMeasure-Object 的别名,如果您正在寻找帮助页面或其他任何内容,它还可以进行平均、最小值/最大值等操作。

    【讨论】:

    • @lubierzca 没问题,就像仅供参考一样 Measure 每次使用都会对性能产生一些轻微影响(因为自定义函数可能会更快),但除非您迭代数千次,否则不会引起注意.
    • 是否也可以计算磁盘数量?我在 Measure-Objet 中没有找到 Count 参数
    • @lubierzca 你可以只做( ... | Measure ).Count,不需要-Count,如果你真的想要这些结果,你只需要指定Sum或Average或Min/Max。
    猜你喜欢
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2019-11-01
    • 2018-02-08
    • 1970-01-01
    相关资源
    最近更新 更多