VMware Cloud Community
the1960
Contributor
Contributor
Jump to solution

Folder totalizing

Hi guys,

how can I implement the sum of CPU and Memory in this script.

$report = @()

Get-Folder -Type VM |

ForEach-Object -Process {

   $row = '' | Select-Object Folder, VMCount, ProvisionedSpace, TotalUsedSpace, RAM

   $vms = Get-VM -Location $_

   New-Object PSObject -Property ([ordered]@{

      Folder                                 = $_.Name

      VMCount                            = $vms.Count

      TotalProvisionedSpaceGB = [math]::Round(($vms | Measure-Object -Property ProvisionedSpaceGB -Sum).Sum)

      TotalUsedSpaceGB           = [math]::Round(($vms | Measure-Object -Property UsedSpaceGB -Sum).Sum)

   })

   $row.Folder                    = $_.Name

   $row.VMCount               = $vms.Count

   $row.ProvisionedSpace = [math]::Round(($vms | Measure-Object -Property ProvisionedSpaceGB -Sum).Sum)

   $row.TotalUsedSpace    = [math]::Round(($vms | Measure-Object -Property UsedSpaceGB -Sum).Sum)

     

   $report += $row

}

$report | Export-Csv "C:\Temp\FolderDiskSpace.csv" -Delimiter ";" -NoTypeInformation

@Luc you already know this script 😉

0 Kudos
1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

You could do something like this

Get-Folder -Type VM |

ForEach-Object -Process {

   $vms = Get-VM -Location $_

   New-Object PSObject -Property ([ordered]@{

   Folder = $_.Name

   VMCount = $vms.Count

   CpuTotal = if($vms.Count -ne 0){($vms | Measure-Object -Property NumCpu -Sum).Sum} else {0}

   MemGBTotal = if($vms.Count -ne 0){($vms | Measure-Object -Property MemoryGB -Sum).Sum} else {0}

   TotalProvisionedSpaceGB = if($vms.Count -ne 0){[math]::Round(($vms | Measure-Object -Property ProvisionedSpaceGB -Sum).Sum)} else {0}

   TotalUsedSpaceGB = if($vms.Count -ne 0){[math]::Round(($vms | Measure-Object -Property UsedSpaceGB -Sum).Sum)} else {0}

   })

} | Export-Csv "C:\Temp\FolderDiskSpace.csv" -Delimiter ";" -NoTypeInformation


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

0 Kudos
4 Replies
daphnissov
Immortal
Immortal
Jump to solution

Please move thread to PowerCLI.

0 Kudos
parakkatil
Contributor
Contributor
Jump to solution

have you tried the group-object cmdlet?

0 Kudos
LucD
Leadership
Leadership
Jump to solution

You could do something like this

Get-Folder -Type VM |

ForEach-Object -Process {

   $vms = Get-VM -Location $_

   New-Object PSObject -Property ([ordered]@{

   Folder = $_.Name

   VMCount = $vms.Count

   CpuTotal = if($vms.Count -ne 0){($vms | Measure-Object -Property NumCpu -Sum).Sum} else {0}

   MemGBTotal = if($vms.Count -ne 0){($vms | Measure-Object -Property MemoryGB -Sum).Sum} else {0}

   TotalProvisionedSpaceGB = if($vms.Count -ne 0){[math]::Round(($vms | Measure-Object -Property ProvisionedSpaceGB -Sum).Sum)} else {0}

   TotalUsedSpaceGB = if($vms.Count -ne 0){[math]::Round(($vms | Measure-Object -Property UsedSpaceGB -Sum).Sum)} else {0}

   })

} | Export-Csv "C:\Temp\FolderDiskSpace.csv" -Delimiter ";" -NoTypeInformation


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

0 Kudos
the1960
Contributor
Contributor
Jump to solution

That's perfect

Thanks a lot.

0 Kudos