$VMs = Get-Content C:\csv\TestPerf.txt
foreach ($vm in $VMs){
$CPU = ""
$Mem = ""
$CPU = Get-Stat -Entity $vm -Stat "cpu.usagemhz.average" -MaxSamples 1 -Realtime | Where{$_.instance -eq ""}| Select-Object -ExpandProperty Value
$Mem = Get-Stat -Entity $vm -Stat "mem.usage.average" -MaxSamples 1 -Realtime|Select-Object -ExpandProperty Value
Write-Host $vm, $CPU, $mem
}
Is there a way to change this from realtime to yesterday at 8 am? I'm sure it's possible I just can't figure out how.
Sure, use the Start parameter and drop the Realtime switch.
$VMs = Get-Content C:\csv\TestPerf.txt
foreach ($vm in $VMs){
$CPU = ""
$Mem = ""
$CPU = Get-Stat -Entity $vm -Stat "cpu.usagemhz.average" -MaxSamples 1 -Start (Get-Date -hour 8).AddDays(-1) |
Where{$_.instance -eq ""}| Select-Object -ExpandProperty Value
$Mem = Get-Stat -Entity $vm -Stat "mem.usage.average" -MaxSamples 1 -Start (Get-Date -hour 8).AddDays(-1)|
Select-Object -ExpandProperty Value
Write-Host $vm, $CPU, $mem
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
I'm getting this as a result:
PS B:\> Get-Stat -Entity $vm -Stat "cpu.usagemhz.average" -MaxSamples 1 -Start (Get-Date -hour 8).AddDays(-1) |
Where{$_.instance -eq ""}
MetricId Timestamp Value Unit Instance
-------- --------- ----- ---- --------
cpu.usagemhz.average 8/31/2017 12:00:00 PM 377 MHz
Any idea why it isn't pulling yesterday at 8?
What does this return?
$date = (Get-Date -hour 8).AddDays(-1)
Get-Stat -Entity $vm -Stat "cpu.usagemhz.average" -Start $date -Finish $date
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
is there a way to get CPU & MEM utilization stats only from 7am - 7pm for each day for last 7 days?
Not directly, but you can code this.
See for example the Business hours/working days section in PowerCLI & vSphere statistics – Part 2 – Come together
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference