.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:変数に受け取れませんけど