Hi to all,
I need to export a weekly reports to list a specific VMs, deployed around 5 vCenters, OS disk % usage space status and sort by this value.
Using the command on the following post:
https://communities.vmware.com/t5/VMware-PowerCLI-Discussions/PowerCLI-VM-Disk-Usage/td-p/1409959
I tried this:
$viServer = Read-Host 'Please Enter Your vCenter hostname/IP address'
$cred = Get-Credential
Connect-VIServer $viServer -Credential $cred
######VMs that starts with VDI
$vmlists = Get-VM | Where-Object {($_.Name -like "VDI*")}
$report = @()
foreach($vm in $vmlists){
Get-HardDisk -VM $vm | ForEach-Object {
$HardDisk = $_
$row = "" | Select VM, GuestName, Datastore, HardDisk, DiskType, CapacityGB, DiskFreespace, TotalVMFSConsumed, ProvisionType
$row.VM = $VM.Name
$row.GuestName = $vm.Guest.HostName
$row.HardDisk = $HardDisk.Name
$row.CapacityGB = ("{0:f1}" -f ($HardDisk.CapacityKB/1MB))
$row.DiskFreespace = $vm.Guest.Disks | Measure-Object FreeSpaceGB -Sum | Select -ExpandProperty Sum
$row.DiskType = $HardDisk.get_DiskType()
$row.TotalVMFSConsumed = $vm.get_UsedSpaceGB()
$row.ProvisionType = $HardDisk.StorageFormat
$report += $row
}
}
$report | Export-Csv -Path C:\reports\VMDisk-CapacityReport.csv -NoTypeInformation -UseCulture
but how can I convert to used % and sort by this value?
Regards
You could do
Get-VM | Where-Object {($_.Name -like "VDI*")} |
Select Name,
@{N=“GuestCapacityGB";E={[math]::Round(($_.Guest.Disks | %{ $_.Capacity / 1GB} | Measure-Object -Sum | Select -ExpandProperty Sum),2)}},
@{N="GuestUsageGB";E={[math]::Round(($_.Guest.Disks | %{$_.CapacityGB - $_.FreeSpaceGB} | Measure-Object -Sum | Select -ExpandProperty Sum),1)}},
@{N=“FreeSpaceGB";E={[math]::Round(($_.Guest.Disks | %{ $_.FreeSpace / 1GB} | Measure-Object -Sum | Select -ExpandProperty Sum),2)}},
@{N="GuestUsage(%)";E={
$capacityGB = ($_.Guest.Disks | Measure-Object -Property CapacityGB -Sum).Sum
$freeGB = ($_.Guest.Disks | Measure-Object -Property FreeSpaceGB -Sum).Sum
[math]::Round((($capacityGB - $freeGB)/$capacityGB*100),2)}} |
Sort-Object -Property "GuestUsage(%)" |
Export-Csv -Path .\report.csv -NoTypeInformation -UseCulture
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Which property do you want in %?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
VM guest OS usage.
I find this:
#$vmlists = Get-VM | Where-Object {($_.Name -like "VDI*")}
Get-VM | Where-Object {($_.Name -like "VDI*")} |
Select Name,
@{N=“GuestCapacityGB";E={[math]::Round(($_.Guest.Disks | %{ $_.Capacity / 1GB} | Measure-Object -Sum | Select -ExpandProperty Sum),2)}},
@{N="GuestUsageGB";E={[math]::Round(($_.Guest.Disks | %{$_.CapacityGB - $_.FreeSpaceGB} | Measure-Object -Sum | Select -ExpandProperty Sum),1)}},
@{N=“FreeSpaceGB";E={[math]::Round(($_.Guest.Disks | %{ $_.FreeSpace / 1GB} | Measure-Object -Sum | Select -ExpandProperty Sum),2)}},
@{N="GuestUsage(%)";E={
$capacityGB = $_.Guest.Disks | Measure-Object -Property CapacityGB -Sum | Select -ExpandProperty Sum
$freeGB = $_.Guest.Disks | Measure-Object -Property FreeSpaceGB -Sum | Select -ExpandProperty Sum
[math]::Round((($capacityGB - $freeGB)/$capacityGB*100),2)}} | ft #,
So your question is answered I assume?
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
@LucD partially.
I need to add export to csv, as in attachment.
If it was possible to order the output on column "GuestUsage(%)" directly in the export command.
Thanks
You could do
Get-VM | Where-Object {($_.Name -like "VDI*")} |
Select Name,
@{N=“GuestCapacityGB";E={[math]::Round(($_.Guest.Disks | %{ $_.Capacity / 1GB} | Measure-Object -Sum | Select -ExpandProperty Sum),2)}},
@{N="GuestUsageGB";E={[math]::Round(($_.Guest.Disks | %{$_.CapacityGB - $_.FreeSpaceGB} | Measure-Object -Sum | Select -ExpandProperty Sum),1)}},
@{N=“FreeSpaceGB";E={[math]::Round(($_.Guest.Disks | %{ $_.FreeSpace / 1GB} | Measure-Object -Sum | Select -ExpandProperty Sum),2)}},
@{N="GuestUsage(%)";E={
$capacityGB = ($_.Guest.Disks | Measure-Object -Property CapacityGB -Sum).Sum
$freeGB = ($_.Guest.Disks | Measure-Object -Property FreeSpaceGB -Sum).Sum
[math]::Round((($capacityGB - $freeGB)/$capacityGB*100),2)}} |
Sort-Object -Property "GuestUsage(%)" |
Export-Csv -Path .\report.csv -NoTypeInformation -UseCulture
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference