VMware Cloud Community
MindTraps
Contributor
Contributor
Jump to solution

Coding Error rounding $_.UsedSpaceGB & $_.ProvisionedSpaceGB

$Report_VSI = @()

get-vm -Name MCS-* | Sort Name | ForEach-Object {

$vm = Get-View $_.ID

$vms = "" | Select-Object Name, Hostname, Host, VMState, IPAddress, TotalCPU, CoresPerSocket, TotalMemoryGB, CPUHotAdd, MemoryHotAdd, UsedSpaceGB, ProvisionedSpaceGB, ToolsStatus, ToolsVersion, HardwareVersion, Guest

$vms.Name = $vm.Name

$vms.HostName = $vm.guest.hostname

$vms.Host = Get-View -Id $vm.Runtime.Host -property Name | select -ExpandProperty Name

$vms.VMState = $vm.summary.runtime.powerState

$vms.IPAddress = $vm.guest.ipAddress

$vms.TotalCPU = $vm.summary.config.numcpu

$vms.CoresPerSocket = $vm.config.hardware.NumCoresPerSocket

$vms.TotalMemoryGB = $_.MemoryGB

$vms.CPUHotAdd = $vm.Config.CpuHotAddEnabled

$vms.MemoryHotAdd = $vm.Config.MemoryHotAddEnabled

$vms.UsedSpaceGB = @{n="UsedSpace(GB)"; E={[math]::round($_.UsedSpaceGB)}}

$vms.ProvisionedSpaceGB = @{n="ProvisionedSpace(GB)"; E={[math]::round($_.ProvisionedSpaceGB)}}

$vms.ToolsStatus = $vm.guest.toolsstatus

$vms.ToolsVersion = $vm.config.tools.toolsversion

$vms.HardwareVersion = $vm.Config.Version

$vms.Guest = $vm.Summary.Config.GuestFullName

$Report_VSI += $vms

}

 

The above code works for everything but UsedSpaceGB and ProvisionedSpaceGB. If I set those to on'y look at $_.*field* it returned the correct data. Any help or suggestions are welcome!

0 Kudos
1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

You are using the syntax for a calculated property, but that is only valid on the property parameter of a Select-Object cmdlet.

Just do

$Report_VSI = @()

Get-VM -Name MCS_* | Sort Name | ForEach-Object {

    $vm = Get-View $_.ID

    $vms = "" | Select-Object Name, Hostname, Host, VMState, IPAddress, TotalCPU, CoresPerSocket, TotalMemoryGB, CPUHotAdd, MemoryHotAdd, UsedSpaceGB, ProvisionedSpaceGB, ToolsStatus, ToolsVersion, HardwareVersion, Guest

    $vms.Name = $vm.Name

    $vms.HostName = $vm.guest.hostname

    $vms.Host = Get-View -Id $vm.Runtime.Host -property Name | select -ExpandProperty Name

    $vms.VMState = $vm.summary.runtime.powerState

    $vms.IPAddress = $vm.guest.ipAddress

    $vms.TotalCPU = $vm.summary.config.numcpu

    $vms.CoresPerSocket = $vm.config.hardware.NumCoresPerSocket

    $vms.TotalMemoryGB = $_.MemoryGB

    $vms.CPUHotAdd = $vm.Config.CpuHotAddEnabled

    $vms.MemoryHotAdd = $vm.Config.MemoryHotAddEnabled

    $vms.UsedSpaceGB = [math]::round($_.UsedSpaceGB)

    $vms.ProvisionedSpaceGB = [math]::round($_.ProvisionedSpaceGB)

    $vms.ToolsStatus = $vm.guest.toolsstatus

    $vms.ToolsVersion = $vm.config.tools.toolsversion

    $vms.HardwareVersion = $vm.Config.Version

    $vms.Guest = $vm.Summary.Config.GuestFullName

    $Report_VSI += $vms

}


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

View solution in original post

0 Kudos
2 Replies
LucD
Leadership
Leadership
Jump to solution

You are using the syntax for a calculated property, but that is only valid on the property parameter of a Select-Object cmdlet.

Just do

$Report_VSI = @()

Get-VM -Name MCS_* | Sort Name | ForEach-Object {

    $vm = Get-View $_.ID

    $vms = "" | Select-Object Name, Hostname, Host, VMState, IPAddress, TotalCPU, CoresPerSocket, TotalMemoryGB, CPUHotAdd, MemoryHotAdd, UsedSpaceGB, ProvisionedSpaceGB, ToolsStatus, ToolsVersion, HardwareVersion, Guest

    $vms.Name = $vm.Name

    $vms.HostName = $vm.guest.hostname

    $vms.Host = Get-View -Id $vm.Runtime.Host -property Name | select -ExpandProperty Name

    $vms.VMState = $vm.summary.runtime.powerState

    $vms.IPAddress = $vm.guest.ipAddress

    $vms.TotalCPU = $vm.summary.config.numcpu

    $vms.CoresPerSocket = $vm.config.hardware.NumCoresPerSocket

    $vms.TotalMemoryGB = $_.MemoryGB

    $vms.CPUHotAdd = $vm.Config.CpuHotAddEnabled

    $vms.MemoryHotAdd = $vm.Config.MemoryHotAddEnabled

    $vms.UsedSpaceGB = [math]::round($_.UsedSpaceGB)

    $vms.ProvisionedSpaceGB = [math]::round($_.ProvisionedSpaceGB)

    $vms.ToolsStatus = $vm.guest.toolsstatus

    $vms.ToolsVersion = $vm.config.tools.toolsversion

    $vms.HardwareVersion = $vm.Config.Version

    $vms.Guest = $vm.Summary.Config.GuestFullName

    $Report_VSI += $vms

}


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

0 Kudos
MindTraps
Contributor
Contributor
Jump to solution

You sir are awesome!!! I'm not the best at PowerShell and I truly thank you for your input and help!!!!
0 Kudos