VMware Cloud Community
dhanu2k7
Enthusiast
Enthusiast

Vmtools build version

hello

is there any possible to add single line to my script for VMtools build number? I am looking for Vmtools build number

LucD‌  or any expert Please help

$allLines = @() # Line added

  Get-VM |

  ForEach-Object {

    $VM = $_

    $VMview = $VM | Get-View

        $VMResourceConfiguration = $VM | Get-VMResourceConfiguration

        $VMHardDisks = $VM | Get-HardDisk

        $HardDisksSizesGB = @()

        $Temp = $VMHardDisks | ForEach-Object { $HardDisksSizesGB += [Math]::Round($_.CapacityKB/1MB) }

        $VmdkSizeGB = ""

        $Temp = $HardDisksSizesGB | ForEach-Object { $VmdkSizeGB += "$_+" }

        $VmdkSizeGB = $VmdkSizeGB.TrimEnd("+")

        $TotalHardDisksSizeGB = 0

        $Temp = $HardDisksSizesGB | ForEach-Object { $TotalHardDisksSizeGB += $_ }

        $VMDKnames = @()

        $Temp = $VMHardDisks | ForEach-Object { $VMDKnames += $_.Filename.Split("/")[1] }

        $Snapshots = $VM | Get-Snapshot

        $Report = "" | Select-Object VMname,GuestState,ToolsStatus,UsedSpaceGB,ProvisionedSpaceGB,Version,DNSname,ESXname,ClusterName,MemoryGB,vCPUcount,vNICcount,vNICType,

        IPaddresses,VMXname,VMDKname,VmdkSizeGB,TotalVmdkSizeGB,DatastoreName,ToolsVersion,ToolsUpdate,NumCpuShares,

        CpuLimitMHZ,CpuReservationMHZ,NumMemShares,ReservationsMB,LimitMB,SnapshotCount,GuestOS,VLANid,Portgroup,

        RDMPath,GuestDisks,GuestDiskspaceGB,GuestDiskspaceUsedGB,GuestDiskspaceUsed,Folder

        $Report.VMName = $VM.name

        $Report.GuestState = $VM.guest.State

    $Report.ToolsStatus = $VM.guest.extensiondata.toolsstatus

    $Report.UsedSpaceGB = $VM.UsedSpaceGB

    $Report.ProvisionedSpaceGB = $vm.ProvisionedSpaceGB

    $Report.Version = $vm.ExtensionData.config.version

    $Report.DNSNAME = $vm.Guest.ExtensionData.Hostname

        $Report.ESXname = $VM.Host

        $Report.ClusterName = ($VM | Get-Cluster).Name

        $Report.MemoryGB = $VM.MemoryMB/1KB

        $Report.vCPUcount = $VM.NumCpu

        $Report.vNICcount = $VM.Guest.Nics.Count

        $report.vNicType = [string]::Join(',',($vm.NetworkAdapters | %{$_.Type}))

        $Report.IPaddresses = [string]::Join(',',$VM.Guest.IPAddress)

        $Report.VMXname = $vm.Extensiondata.Config.Files.VmPathName.Split("/")[1]

        $Report.VMDKname = [string]::Join(',',$VMDKnames)

        $Report.VmdkSizeGB = $VmdkSizeGB

        $Report.TotalVmdkSizeGB = $TotalHardDisksSizeGB

        $Report.DatastoreName = [string]::Join(',',($vm.Extensiondata.Config.DatastoreUrl | %{$_.Name}))

        $Report.ToolsVersion = $vm.guest.ExtensionData.ToolsVersion

        $Report.ToolsUpdate = $vm.Extensiondata.Guest.ToolsStatus

        $Report.NumCpuShares = $VMResourceConfiguration.NumCPUShares

        $Report.CpuLimitMHZ = &{if($VMResourceConfiguration.CpuLimitMhz -eq -1){"No Limit"}else{$VMResourceConfiguration.CpuLimitMhz}}

        $Report.CpuReservationMHZ = $VMResourceConfiguration.CpuReservationMhz

        $Report.NumMemShares = $VMResourceConfiguration.NumMemShares

        $Report.ReservationsMB = $VMResourceConfiguration.MemReservationMB

        $Report.LimitMB = &{if($VMResourceConfiguration.MemLimitMB -eq -1){"No Limit"}else{$VMResourceConfiguration.MemLimitMB}}

        $Report.SnapshotCount = (@($VM | Get-Snapshot)).Count

        $Report.GuestOS = $VM.Guest.OSFullName

        $Report.VLANid = [string]::Join(',',(Get-VirtualPortgroup -VM $vm | %{$_.VlanId}))

        $Report.Portgroup = [string]::Join(',',(Get-VirtualPortgroup -VM $vm | %{$_.Name}))

        $RDMPaths = $vm | Get-HardDisk | where {$_.DiskType -like "Raw*"}

        $Report.RDMPath = &{if($RDMPaths){[string]::Join(',',($RDMPaths | %{$_.ScsiCanonicalName}))}else{"No RDM"} }

        $Report.GuestDisks = [string]::Join(',',($VM.Guest.Disks | %{$_.Path}))

        $Report.GuestDiskspaceGB = [string]::Join(',',($VM.Guest.Disks | %{"{0:f0}" -f ($_.Capacity/1GB)}))

        $Report.GuestDiskspaceUsedGB = [string]::Join(',',($VM.Guest.Disks | %{"{0:f0}" -f (($_.Capacity - $_.FreeSpace)/1GB)}))

        $Report.GuestDiskspaceUsed = [string]::Join(',',($VM.Guest.Disks | %{"{0:p0}" -f (($_.Capacity - $_.FreeSpace)/$_.Capacity)}))

    $report.Folder = $VM | Select BlueFolderPath

        $allLines += $Report # Line changed               

    }


$allLines | Export-Csv "GDCVMreport.csv" -NoTypeInformation -UseCulture

0 Kudos
1 Reply
RvdNieuwendijk
Leadership
Leadership

You can find the VMware Tools build number at: $vm.ExtensionData.Config.Tools.ToolsVersion

So, you have to add VMToolsBuildNumber to the line starting with the following: $Report =  " " | Select-Object VMname

You also have to add the following line to your script: $Report.VMToolsBuildNumber = $vm.ExtensionData.Config.Tools.ToolsVersion

Blog: https://rvdnieuwendijk.com/ | Twitter: @rvdnieuwendijk | Author of: https://www.packtpub.com/virtualization-and-cloud/learning-powercli-second-edition
0 Kudos