Pages: [1]
Print
Author Topic: List Cluster, VM Name, VM Hostname, Operating Sytem, Number of CPU's, Memory  (Read 4521 times)
esarakaitis
Administrator
Sr. Member
*****
Posts: 256


8223109 sack57@hotmail.com littleking57 rootinfortwayne
View Profile WWW Email
« on: January 20, 2010, 11:27:37 AM »

Code:
$report= @()
$clusters = get-cluster

foreach ($cluster in $clusters)
{
    foreach ($vmhost in ($cluster | get-vmhost))
    {
      $report +=  $vmhost | get-vm | Select-Object @{Name="Cluster"; Expression={$cluster.name}},
                                         @{Name="VM Display Name"; Expression={$_.name}},
                                         @{Name="VM Hostname"; Expression={$_.guest.hostname}},
                                         @{Name="OS"; Expression={$_.guest.osfullname}},
                                         @{Name="NumCPU"; Expression={$_.numcpu}},
                                         @{Name="Memory"; Expression={$_.memorymb}}
    }
}
$report | Out-GridView
« Last Edit: January 20, 2010, 11:34:52 AM by esarakaitis » Logged
esarakaitis
Administrator
Sr. Member
*****
Posts: 256


8223109 sack57@hotmail.com littleking57 rootinfortwayne
View Profile WWW Email
« Reply #1 on: January 21, 2010, 09:19:02 AM »

a better version:

Code:
$myCol = @()
ForEach ($Cluster in Get-Cluster)
    {
        ForEach ($vm in ($cluster | Get-VM))
        {
            $VMView = $VM | Get-View
            ForEach ($VirtualSCSIController in ($VMView.Config.Hardware.Device | Where {$_.DeviceInfo.Label -match ?SCSI Controller?}))
            {
                    ForEach ($VirtualDiskDevice in ($VMView.Config.Hardware.Device | Where {$_.ControllerKey -eq $VirtualSCSIController.Key}))
                    {
                        $VMSummary = ?? | Select VM, HostName, DiskName, DiskSizeGB, OS, NumCPU, Memory, Cluster
                        $VMSummary.VM = $VM.Name
                        $VMSummary.HostName = $VMView.Guest.HostName
                        $VMSummary.DiskName = $VirtualDiskDevice.DeviceInfo.Label
                        $VMSummary.DiskSizeGB = $VirtualDiskDevice.CapacityInKB / 1024KB
                        $VMSummary.OS = $VMview.Guest.GuestFullName
                        $VMSummary.NumCPU = $VMview.Config.Hardware.NumCPU
                        $VMSummary.Memory = $VMview.Config.Hardware.MemoryMB
                        $VMSummary.Cluster = $Cluster.name
                        $myCol += $VMSummary
                    }
            }
    }
}
$myCol | out-gridview
Logged
esarakaitis
Administrator
Sr. Member
*****
Posts: 256


8223109 sack57@hotmail.com littleking57 rootinfortwayne
View Profile WWW Email
« Reply #2 on: January 21, 2010, 03:38:52 PM »

Code:
ForEach ($Cluster in Get-Cluster)
    {
        ForEach ($vm in ($cluster | Get-VM))
        {
            $VMView = $VM | Get-View
                     write-host   "VM Name" $VM.Name
                     write-host   "VM HostName" $VMView.Guest.HostName
                     write-host   "OS" $VMview.Guest.GuestFullName
                     write-host   "NumCPU" $VMview.Config.Hardware.NumCPU
                     write-host   "MemoryMB" $VMview.Config.Hardware.MemoryMB
                     write-host   "ClusterName" $Cluster.Name
            ForEach ($VirtualSCSIController in ($VMView.Config.Hardware.Device | Where {$_.DeviceInfo.Label -match ?SCSI Controller?}))
            {
                    ForEach ($VirtualDiskDevice in ($VMView.Config.Hardware.Device | Where {$_.ControllerKey -eq $VirtualSCSIController.Key}))
                    {
                       write-host "DiskInfo" $VirtualDiskDevice.DeviceInfo.Label ($VirtualDiskDevice.CapacityInKB / 1024KB)"GB"
                    }
            }
            
    }
}
« Last Edit: February 11, 2010, 10:19:59 AM by esarakaitis » Logged
bmmikee
Newbie
*
Posts: 11


View Profile Email
« Reply #3 on: February 11, 2010, 08:22:12 AM »

ForEach ($Cluster in Get-Cluster)
    {
        ForEach ($vm in ($cluster | Get-VM))
        {
            $VMView = $VM | Get-View
                     write-host   "VM Name" $VM.Name
                     write-host   "VM HostName" $VMView.Guest.HostName
                     write-host   "OS" $VMview.Guest.GuestFullName
                     write-host   "NumCPU" $VMview.Config.Hardware.NumCPU
                     write-host   "MemoryMB" $VMview.Config.Hardware.MemoryMB
                     write-host   "ClusterName" $Cluster.Name
            ForEach ($VirtualSCSIController in ($VMView.Config.Hardware.Device | Where {$_.DeviceInfo.Label -match ?SCSI Controller?}))
            {
                    ForEach ($VirtualDiskDevice in ($VMView.Config.Hardware.Device | Where {$_.ControllerKey -eq $VirtualSCSIController.Key}))
                    {
                       write-host "DiskInfo" $VirtualDiskDevice.DeviceInfo.Label ($VirtualDiskDevice.CapacityInKB / 1024KB)"GB"
                    }
            }
           
    }
}


Great script.  I posted this in another thread, but could you possibly add 'IP Address" to this report as well?  I need something that pulls all VM's  and sorts by what cluster they are in.

Thanks!
Logged
esarakaitis
Administrator
Sr. Member
*****
Posts: 256


8223109 sack57@hotmail.com littleking57 rootinfortwayne
View Profile WWW Email
« Reply #4 on: February 11, 2010, 10:20:46 AM »

sure... just add a

Code:
write-host   "IP" $VMview.Guest.IPaddress
line in there
Logged
Pages: [1]
Print
Jump to: