The -match operator expects a RegEx expression in the right-side operator.
In my code, it will search for the string 'linux', independent if there are other characters before or after it.
So there is no point in adding the asterisk, that is only a meta-character for the -like operator when used like that
It looks as if you didn't install the VMware Tools on all your VMs, so the OSFullName will not be available for those VMs.
And hence the match will fail.
Also note that for powered off VMs, the info might not be available
Can you check if the OSFullName is available on all your VMs
Get-VM |
Select Name,
@{N='GuestId';E={$_.Guest.GuestId}},
@{N='OSFullName';E={$_.Guest.OSFullName}}
Another option is to check for the GuestId, but that is unreliable since you can specify that it is a Linux box, and still install a Windows Guest OS on there.
The following will filter a number of Linux guests, including SLES VMs.
Get-VM | where{$_.Guest.GuestId -match 'linux|sles'} |Select-Object name, Guest, powerstate