Note that some of the metrics you are using require Statistics Level 4 for Historical Interval 3 (Past Month)
$days=30
$start= (Get-Date).AddDays(-$days)
$stat="cpu.usage.average","mem.usage.average","mem.vmmemctl.average",
"mem.shared.average","mem.active.average","mem.swapused.average"
$report=foreach ($clusterinGet-Cluster) {
$esx=Get-VMHost-Location$cluster
Get-Stat-Entity$esx-Start$start-Stat$stat|
Group-Object-Property {$_.Entity.Name} |
select @{N="Cluster";E={$cluster.Name}},
@{N="VMHost";E={$_.Name}},
@{N="Total memory";E={$_.Group[0].Entity.MemoryTotalGB}},
@{N="Total CPU";E={$_.Group[0].Entity.NumCpu}},
@{N="Average memory used";E={$_.Group |Where {$_.MetricId -eq"mem.usage.average"} |
Measure-Object-PropertyValue-Average|Select-ExpandPropertyAverage}},
@{N="Average CPU used";E={$_.Group |Where {$_.MetricId -eq"cpu.usage.average"-and$_.Instance -eq""} |
Measure-Object-PropertyValue-Average|Select-ExpandPropertyAverage}},
@{N="Average memory ballooning";E={$_.Group |Where {$_.MetricId -eq"mem.vmmemctl.average"} |
Measure-Object-PropertyValue-Average|Select-ExpandPropertyAverage}},
@{N="Average shared memory";E={$_.Group |Where {$_.MetricId -eq"mem.shared.average"} |
Measure-Object-PropertyValue-Average|Select-ExpandPropertyAverage}},
@{N="Average active used";E={$_.Group |Where {$_.MetricId -eq"mem.active.average"} |
Measure-Object-PropertyValue-Average|Select-ExpandPropertyAverage}},
@{N="Average memory swapped";E={$_.Group |Where {$_.MetricId -eq"mem.swapused.average"} |
Measure-Object-PropertyValue-Average|Select-ExpandPropertyAverage}}
}
$report|export-csv"c:\scripts\clusterreport.csv"-notypeInformation