Obstajata dve glavni vrsti virtualnih strojev. Eden, ki se imenuje sistemski navidezni stroj, se uporablja za posnemanje vseh procesov in komponent dejanskega računalnika. Drugi, ki je znan kot procesni virtualni stroj, se uporablja za zagon samo ene aplikacije in izgine, ko je ta aplikacija zaprta.
Sistemski navidezni stroji omogočajo osebi, da uporablja en sam strežnik, kot da bi šlo za več različnih računalnikov. Z uporabo te vrste tehnologije je mogoče en stroj ponovno konfigurirati na več različnih načinov. Vsaka od teh rekonfiguracij je popolnoma izolirana od drugih sistemov in lahko deluje kot neodvisen računalnik, čeprav vsaka od njih obstaja na istem fizičnem stroju. Ta izolacija pomeni, da se lahko drugi virtualni stroji še vedno uporabljajo, če se en sistem zruši.
Uporaba sistemskih strojev uporabniku omogoča tudi zagon več operacijskih sistemov na istem računalniku. To uporabniku omogoča zagon programov, ki so na voljo samo v eni vrsti operacijskega sistema. Omogoča tudi testiranje programa na več platformah brez preklapljanja strojev.
Glede na potrebe uporabnika je mogoče sistemske stroje konfigurirati tako, da delujejo, kot da imajo različne vrste strojne opreme. V vsakem računalniku so navidezna matična plošča, navidezni procesor, navidezna kartica za grafični pospeševalnik in vse druge komponente, ki jih najdemo v fizičnem računalniku. Navidezni računalnik je mogoče celo konfigurirati za uporabo strojne opreme v fizičnem sistemu, kot da bi bil izdelan po različnih specifikacijah. Obstaja toliko različnih konfiguracij sistemskih navideznih strojev, kolikor je konfiguracij fizičnih računalniških strežnikov.
Procesni virtualni stroji se uporabljajo za zagon enega samega programa ločeno od operacijskega sistema fizičnega računalnika. To omogoča uporabniku, da zažene program, ki bi sicer morda bil nezdružljiv z običajnim operacijskim sistemom. Vsak procesni stroj je ustvarjen za izvajanje določenega programa in obstaja samo, ko se program izvaja. Če zaprete program, ki se izvaja, bo procesni stroj izginil, ponovno odpiranje tega programa pa bo ustvarilo nov virtualni stroj.