Pytanie Jak sprawdzić mój serwer Windows to maszyna wirtualna lub maszyna fizyczna


Usuwam pulpit do serwerów Windows w naszym laboratorium / centrum danych. Mam wymóg, aby dowiedzieć się, że wszystkie nasze serwery są programami do maszyn wirtualnych lub fizycznych serwerów, z pewnością mamy arkusz środowiska, który nam mówi, która jest która. Ale muszę napisać kod, żeby to rozróżnić. Jakiej techniki muszę użyć? Nie znalazłem Zgromadzenia .Net, aby to zrobić. Poszukując eksperta, aby podzielić się swoją wiedzą lub wskazówkami, dowolnym kierunkiem badań lub linkiem, cokolwiek zostanie docenione!


12
2018-03-18 19:49


pochodzenie




Odpowiedzi:


Możesz spróbować użyć następującego skryptu PowerShell, używa on WMI, aby dowiedzieć się, czy maszyna jest maszyną wirtualną czy maszyną fizyczną.


gwmi -q "select * from win32_computersystem"


15
2018-03-18 20:18



To wygląda o wiele łatwiej, spróbuję już teraz. - ljh
Asesome !!! Uratujesz mój świat, Tim. Doceniać! Zamienię go na kod C #. - ljh


Aby to sprawdzić z poziomu wiersza poleceń, możesz uruchomić to: systeminfo | find "System"

Przykładowe dane wyjściowe dla serwera wirtualnego:

System Manufacturer:       Microsoft Corporation    
System Model:              Virtual Machine    
System Type:               x64-based PC

Przykładowe dane wyjściowe dla serwera fizycznego:

System Manufacturer:       HP
System Model:              ProLiant BL460c G6
System Type:               x64-based PC

6
2017-08-08 10:49





O ile wiem, nie ma łatwo sposób, aby to zrobić.

Jest kilka obejść, ale przynajmniej z tego, co wiem, nie jest to rozwiązanie uniwersalne.

Ben Armstrong napisał post o Wykrywanie maszyn wirtualnych Microsoft i istnieje sztuczka na niskim poziomie, która może określić, czy używasz pliku a Wirtualny PC lub VMWare ale to nadal pozostawia VirtualBox i inne.

Sztuczka, którą możesz spróbować, polega na wykryciu, czy zainstalowane są narzędzia VMWare Tools lub VirtualBox. W większości przypadków są one instalowane w systemie-gościu, aby zapewnić potrzebne funkcje, ale trudno będzie utrzymać różne GUIDS instalacyjne na końcu, więc nie jest to idealne rozwiązanie.

--- Ponadto, jeśli maszyna wirtualna działa w środowisku Linux KVM, dane wyjściowe są podobne enter image description here


6
2018-03-18 20:02



Dziękuję za odpowiedź, przyjrzę się temu. - ljh


Nie ma łatwego sposobu na stwierdzenie, czy działasz w gołym metalu lub na wirtualnym komputerze, najlepszą rzeczą, jaką możesz zrobić, to uzyskać informacje o sprzęcie i zgadnąć, na przykład, czy urządzenie ma kartę sieciową. który zawiera Microsoft, VMware, Oracle, Hyper-V, Virtual lub VirtualBox, najprawdopodobniej jest to maszyna wirtualna, biorąc pod uwagę, że ani Microsoft, Oracle, ani VMware nie wytwarzają kart sieciowych.

Gdy używasz C #, klasa do pobierania tej i innych informacji sprzętowych jest ManagementClass, również jest to miłe projekt które pozwalają odzyskać mnóstwo informacji z komputera przy użyciu ManagementClass.


3
2018-03-18 20:09



Dzięki za odpowiedź. Sprawdzi link. - ljh


Uruchom polecenie systeminfo @ command, zobacz szczegóły systemowe systemu menufacturer n system. Tam można znaleźć informacje o wirtuozach i maszynach fizycznych.


1
2018-04-02 18:08



Dobrze wiedzieć, dziękuję za odpowiedź. - ljh


The tylko * programowy * sposób, w jaki wiem, że to robię niezawodnie jest:

  1. Napisz aplikację, która przeszukuje Twoją sieć (lub zakres IP), aby uzyskać listę komputerów.
  2. Pokaż te maszyny osobie i poproś o sprawdzenie pola, jeśli jest to maszyna wirtualna ...
  3. Wydrukuj raport.

0
2018-03-18 20:17





Spróbuj tego:

FOR /F "tokens=*" %a IN ('wmic bios get bioscharacteristics^|find /c "33"') DO set USBlegacy=%a

Zwraca "1" dla ograniczonego zakresu komputerów stacjonarnych i laptopów w moim środowisku oraz "0" dla stacji roboczych VMWare 9, ESX 5.5 oraz Citrix 6.5 i 7.6. BIOSCharacteristic "50" (jeden "zarezerwowany dla sprzedawcy systemu") Znalazłem tylko w czterech wirtualnych środowiskach, aby działały odwrotnie.

Edycja: lub jest to:

FOR /F "tokens=*" %a IN ('wmic path win32_pnpentity get ^|find /c "ACPI Fan"') DO set ACPIfan=%a

Zwraca "5" na pulpicie HP, "0" na stacjach roboczych VMware 9 i ESX 5.5, nie testowane na pozostałych.


0
2017-07-14 13:37



Zwraca 0 w fizycznych oknach 10 na notebooku - Daniel Fisher lennybacon
Czy to jest "0" dla "wentylatora ACPI"? Ma sens, jeśli notebook nie ma wentylatora. Mój laptop Dell Precision m3800 w systemie Windows 10 zwraca "2" dla "Fan ACPI" (i "1" dla "USBlegacy") - AndyKn
Tak. Wentylator ACPI = 0 - Daniel Fisher lennybacon


możesz użyć tego polecenia w cmd lub powershell

INFORMACJA O SYSTEMIE

Znajdziesz linię z następującym tekstem (lub podobnym):

Producent systemu: VMware, Inc. Model systemu: VMware Virtual Platform


0
2017-12-23 06:44