【PowerShell】「仮想マシン」か「物理マシン」かを見分ける 1

意識的に PowerShell の投稿を増やしております。まだ Windows PowreShell 未経験のみなさん、始めるなら今ですよ!

さて、さまざまな場面に PowerShell が浸透しつつありますし、今後もそれが加速するわけですが、最も基本的なシチュエーションの1つに「仮想環境」か「物理環境」かを識別したい...という場合があります。

最も簡単な方法は、WMI に用意されている win32_computersystem です。

WMI に拒絶反応を示す方もいらっしゃるかもしれませんが、使い方は超簡単です。

PowerShell コンソールから以下のように入力してください。

PS C:\> (get-wmiobject win32_computersystem).model Virtual Machine

上記は Hyper-V 上の仮想マシン上で実行した結果です。結果もシンプルです。

物理マシン上で実行すると以下のような答えが返されます。

PS C:\>  (get-wmiobject win32_computersystem).model 4270CTO

「4270CTO」って何ぞや?

これは、物理マシンのモデル名ですね。

Lenovo - ノートパソコン ThinkPad W520 公式直販サイト – Japan

物理マシンか仮想マシンかを判断するのであれば、このように win32_computersystem の回答が「Virtual Machine」かどうかを判断すれば OK です。

え?Virtual PC か Hyper-V かを見分けたい???

できなくはありません。それについては次回。