Best way to determine physical vs virtual

Is this method still the best way to determine if a endpoint is a physical or virtual system?

It seems like there should be an inspector for doing something like this.

https://bigfix.me/analysis/details/2994596

1 Like

I’m sure it could be improved, but as far as I know it is.

Are you having a specific issue?

No specific issue, it just seemed like kind of a clunky solution and not exactly future proof.

I was hoping there was something like virtual of hardware or physical of hardware

1 Like

It doesn’t account for virtual OS X at all.

I use the following Analysis Property relevance, which seems to work well:

Virtual Machine Vendor:

 (if (it = "Microsoft Corporation" or it = "VMware, Inc." or it = "Bochs" or it = "Parallels Software International Inc." or it = "innotek GmbH" or it = "Xen" or it = "OpenStack Foundation") then "Virtual - " & it else "Physical") of (value "manufacturer" of structure "system_information" of smbios as string)

This only works with the assumption that I have all the VM vendors listed. it is possible that a few new vendors have sprung up since I deployed this 2 years ago.

This relevance will inappropriately consider Microsoft Surface tablets to be virtual.

Also, the SMBIOS inspector does not work on the Mac.

I dont know when this was introduced, but in 9.2.5 there is a property ‘Computer Type’ that is reserved. Relevance appears to only make a small improvement by checking for the Surface. As follows:

if ((version of client < “8.0”) or (if (windows of operating system) then (platform id of operating system = 3) else false) or (if (version of client >= “8.2.1078.0”) then in proxy agent context else false)) then “N/A” else (if exists true whose (if true then( (((item 0 of it contains “VMware”) or ((item 0 of it contains “Microsoft”) and not (item 1 of it as lowercase contains “surface”)) or (item 0 of it contains “Xen”)) of ((value “manufacturer” of it as string, value “product_name” of it as string) of structure “system_information” of smbios))) else false) then “Virtual” else “Physical”)

1 Like

My more general point is that there is no easy solution to this question and the IBM relevance has some holes in it, as do all of the other suggestions.