Not all vSphere-based VMs are the same! This is especially true with the introduction of vSphere IaaS (formally known as vSphere Supervisor or vSphere with Tanzu or Project Pacific) which includes a modern way of provisioning a traditional/classic VM but also a new VM-based form factor known as vSphere Pod VMs.
There was a recent question internally about how you could you distinguish between traditional/classic VMs built from vSphere UI or API versus the vSphere Pod VMs using PowerCLI and specifically using the default Get-VM cmdlet?
As you can see from the screenshot above, there are a few types of VMs that vSphere can provision and manage from the traditional/classic VMs we all know and love for the past two decades to specialized "Service/Agent" VMs that are managed by various VMware or 3rd party solutions to the new vSphere IaaS VMs and vSphere Pod VMs (which I refer to as Supervisor VM and Supervisor Pod VM).
While the Get-VM cmdlet does not distinguish between the various types, there are various properties that can be used within the vSphere API to help us distinguish between the different types of VMs. I will not bore you with the details, but you see the code snippet I wrote below on how to identify between the different VMs types, which can helpful for automation and/or reporting purposes.
$vms = Get-Vm $results = @() foreach ($vm in $vms) { if($vm.GuestId -eq "crxPod1Guest" -or $vm.GuestId -eq "crxSys1Guest") { $vmType = "Supervisor Pod VM" } elseif($vm.ExtensionData.Config.ManagedBy -ne $null) { switch($vm.ExtensionData.Config.ManagedBy.ExtensionKey) { "com.vmware.vim.eam" {$vmType = "EAM Managed VM"} "com.vmware.vcenter.wcp" {$vmType = "Supervisor VM"} "default" {$vmType = "Other 2nd/3rd Party Managed Classic VM"} } } else { $vmType = "Classic VM" } $tmp = [pscustomobject] @{ Name = $vm.Name Type = $vmType } $results+=$tmp } $results | FT | Sort-Object -Property Types
Here is an example output from the script for the exact same environment as the vSphere UI screenshot but now you have a way to distinguish between the various types of VMs managed by vSphere.
Thanks for the comment!