tech.guitarrapc.cóm

C#, PowerShell, Unity, Cloud, Serverless Technical Update and Features

PowerShell で Windows OS Versionを取得する

.Net Frameworks での Windows 8.1のバージョンに関して面白い記事があります。

grabacr.nét - Windows 8.1 でバージョン判別するときの注意点

Windows 8 のバージョン 6.2 が帰ってきます。

デバッグ実行している間は正しいバージョン 6.3 が取れるのに、リリース ビルドで実行すると正しいバージョンが取れないという、非常にややこしい状況になります。

さて、PowerShell ならどうでしょうか。

そう、取れます。

.NET Frameworksで取得する

記事と同様に .NET Frameworks でやってみましょう。

[System.Environment]::OSVersion

結果です。

Platform ServicePack Version    VersionString
-------- ----------- -------    -------------
 Win32NT             6.3.9600.0 Microsoft Windows NT 6.3.9600.0

記事にあるここですね。

Operating system version changes in Windows 8.1 and Windows Server 2012 R2 http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074.aspx

That means that while you can still call the APIs, if your app does not specifically target Windows 8.1, you will get Windows 8 versioning (6.2.0.0).

はい、良かったやったね!

Cmdlet で取得する

PowerShell なら Cmdlet もあります。が、これは Proffesionalとかそれなんです。

しかし、-Verboseスイッチを付ければ、表示はされます。*1

Get-WindowsEdition -Online -Verbose
VERBOSE: Dism PowerShell Cmdlets Version 6.3.0.0
VERBOSE: Target Image Version 6.3.9600.16384


Edition : Professional

まとめ

素直に .NET 使いましょう。

*1:変数に受け取れませんけど