Installed software in virtual machine

I’m looking to list down all the software installed in a virtual machine.
I can list down all the virtual machines and then can iterate through it and can display the name of all the virtual machines ( See the code below).

I basically looking to list name and versions of following softwares in all virtual machines if installed:

  1. OS name and version
  2. MS SQL server name and version
  3. MS office edition and version
  4. Remote desktop utility version

Thanks in advance:

Disconnect-VIServer * -Force -Confirm:$false
$OutPath = @()
$vcenter = @()
$VMs = @()
$VMName = @()
$vcenter = “vcsa-01a.corp.local”
Connect-VIServer $vcenter
$VMs = Get-VM | Sort-Object Name

ForEach ($VM in $VMs)

$VMName = $VM.Name

Write-Host "VM NAME : " $VMName


Try querying Win32_Product from them.

Thankyou for the reply but this will not return installed programs on virtual machines, rather it will return installed programs on host machine.