システムトラブルやアプリケーションログへの出力など、Windowsのバージョンを取得する必要がありますが、Powershellではこのバージョン情報の取得方法によって取得できる情報や内容が異なります。
今回は、Powershellを利用してWindowsのバージョンを取得する方法5つ紹介します。
- systeminfo コマンドを使ったOSバージョンの取得
- Get-ComputerInfo Cmdletを利用した取得
- System.Environmentを利用した取得
- レジストリからの情報取得
- WMIから取得
\自身のスキルを向上するには技術書で!!/
月額¥980で技術書が読み放題!!
- ビジネススキルとマインド向上したい!!
- 決断や行動を先送りにしてしまう方!!
systeminfoコマンドを使って取得する
> systeminfo
ホスト名: 53A8
OS 名: Microsoft Windows 11 Pro
OS バージョン: 10.0.22000 N/A ビルド 22000
OS 製造元: Microsoft Corporation
OS 構成: スタンドアロン ワークステーション
OS ビルドの種類: Multiprocessor Free
・・・
上記の 10.0.22000 N/A ビルド 22000 がWindows OSのバージョンとなります。
こちらはPowershellだけでなく、コマンドプロンプトでも同じコマンドで取得できます。
Get-ComputerInfo Cmdletを利用して取得する
Get-ComputerInfoはコンピュータ名やOSのバージョンなどを取得することができるCmdletとなります。このCmdletは PowerShell 5.1 で導入された機能となります。基本的にWindows 10 1607のバージョンからは規定でインストールされていますが、Server 2012 R2などのOSをご利用の場合は「Windows Management Framework 5.1 」のインストールが必要となります。
> Get-ComputerInfo
WindowsVersion : 2009
OSDisplayVersion : 21H2
・・・
WindowsCurrentVersion : 6.3
・・・
WindowsProductName : Windows 10 Pro
・・・
下記のようにパイプラインを利用して Select-Object Cmdletにて個別の情報のみを取得することができます。
> Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion
WindowsProductName WindowsVersion
------------------ --------------
Windows 10 Pro 2009
System.Environmentを領して取得する
System.Environmentクラスというものがあり、このクラスを利用することでシステム情報を取得することができます。このSystem.Environmentクラスの「OSVersion」というプロパティを指定することでOSバージョンを取得することができます。
> [System.Environment]::OSVersion.Version
Major Minor Build Revision
----- ----- --------- --------
10 0 22000 0
レジストリからバージョンを取得する
Powershellではレジストリ情報を取得する際に「Get-ItemProperty」Cmdletを利用して取得します。
今回はこのCmdletを利用し下記のレジストリからバージョンをRelease IDを取得します。
> (Get-ItemProperty "HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion").ReleaseId
2009
2009 という情報が取得できたかと思います。この値がWindowsVersionとなります。
WMIからバージョンを取得する
WMIから情報を取得する場合は「Get-CimInstance」Cmdletを利用します。OSバージョンの情報は「Win32_OperatingSystem」クラスに用意されていますので、このクラスの「Version」プロパティから情報を取得します
> (Get-CimInstance Win32_OperatingSystem).version
10.0.22000
System.Environmentクラスで得た情報を同じ情報が取得できました。
最後に
Windowsに限らず今は様々なデバイスがあり、かつそのバージョンも多岐に渡ります。
今回はWindowsのバージョンについてでしたが、WindowsにもサーバーOS含め様々なバージョンがあり、Windows用のアプリを作成する際もそれぞれのバージョンにおいて作り方が変わってきます。
その際にトラブルシュートなどで対象のバージョンを知るだけでもかなり違いますので、是非今回のような取得方法を参考にしてみてはいかがでしょうか??