Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Jak ve skriptu poznáte jestli běžíte ve virtuálním počítači na Hyper-V
srpen 16
Jak ve skriptu poznáte jestli běžíte ve virtuálním počítači na Hyper-V

Občas něco skriptujete a potřebujete se rozhodovat, jestli běžíte na železe, nebo ve virtuálním počítači. Prozatím to u Hyper-V virtuálních strojů detekuju takto, pomocí WMI třídy Win32_BaseBoard:

$runningInHyperV = gwmi Win32_BaseBoard | % { if (($_.Manufacturer -eq 'Microsoft Corporation') -and ($_.Product -eq 'Virtual Machine')) { $true } else { $false } }

Co jsem googloval, tak se nikdo nedívá na tu hodnotu Product (nebo to stejné v tabulce Win32_ComputerSystem.Model), ale já bych to nepodceňoval. V dnešní době bych očekával, že pomalu začnou věci jako Surface a Nokia hlásit výrobce taky jako Microsoft.

Kdyby to náhodou někdo měl, mohl by sem přikomentovat, jakou má hodnotu v políčku Manufacturer a Product, když si pustí následující skript:

gwmi Win32_BaseBoard | select Manufacturer, Product

 

Comments

VMWare

A na VMWare je dobre toto
gwmi Win32_ComputerSystem | select Model

pretoze BaseBoard vrati

Manufacturer                                                Product
------------                                                -------
Intel Corporation                                           440BX Desktop Reference Platform
Ivan Sladek on 18.8.2014 12:36

Re: Jak ve skriptu poznáte jestli běžíte ve virtuálním počítači na Hyper-V

používám podobné řešení v CMD skriptech:
HYPER-V 2008 R2
C:\Users\u11478m>wmic csproduct get vendor, name
Name             Vendor
Virtual Machine  Microsoft Corporation

VMware Workstation
C:\Users\Administrator>wmic csproduct get vendor, name
Name                     Vendor
VMware Virtual Platform  VMware, Inc.

ty se mi osvědčily jako nejspolehlivější metoda :)

jo a posílám požadovaný výstup
HYPER-V 2008 R2
PS C:\Users\u11478m> gwmi Win32_BaseBoard | select Manufacturer, Product

Manufacturer                                                Product
------------                                                -------
Microsoft Corporation                                       Virtual Machine

VMware Workstation
PS C:\Users\Administrator> gwmi Win32_BaseBoard | select Manufacturer, Product

Manufacturer                                                Product
------------                                                -------
Intel Corporation                                           440BX Desktop Reference Platform
Michal Zobec on 19.8.2014 22:18

Re: Jak ve skriptu poznáte jestli běžíte ve virtuálním počítači na Hyper-V

Zkusil jsem to spustit na Surface RT první generace a na Surface Pro 3. Výsledky jsou následující:
Surface RT: Manufacturer Microsoft, Product
Surface with Windows RT
Surface Pro 3: Manufacturer Microsoft Corporation, Product Surface Pro 3

Takže minimálně u té Pro 3 by detekce pouze podle Manufacturer dopadla špatně.
Kanty on 19.8.2014 23:39

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments