OSのバージョン情報を取得する

 下記のコマンドを実行すると、OSのバージョン情報を取得することができます。下記は、Windows 7(サービスパックなし)で実行した例です。

PS U:\Work> [Environment]::OSVersion

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


PS U:\Work>

 また、次の方法で、Windows 2000、XP、Vista、7を区別することができます。

$major = [Environment]::OSVersion.Version.Major
$minor = [Environment]::OSVersion.Version.Minor
if    ($major -eq 5 -and $minor -eq 0) { "Windows 2000" } `
elseif($major -eq 5 -and $minor -eq 1) { "Windows XP" }   `
elseif($major -eq 6 -and $minor -eq 0) { "Windows Vista" }`
elseif($major -eq 6 -and $minor -eq 0) { "Windows Server 2008" }    `
elseif($major -eq 6 -and $minor -eq 1) { "Windows 7" }    `
elseif($major -eq 6 -and $minor -eq 1) { "Windows Server 2008 R2" }    `
elseif($major -eq 6 -and $minor -eq 2) { "Windows 8" }    `
elseif($major -eq 6 -and $minor -eq 2) { "Windows Server 2012" }    `
else { "Unkown Version" }

バージョン番号に関する余談

 Windows XP, Vista, 7, 8とメジャーバージョンが上がるに連れてバージョン番号も1ずつ上がっていってほしい所ですが、アプリケーションの互換性の問題があり、現実にはそうなっていません。

 アプリケーション開発者は、特定のバージョンのWindowsでしか動かないようにするため、たとえばVistaまでしか動かないようにするため、わざわざバージョンをチェックして、『メジャーバージョンの番号が「6」より大きければ起動しない』などの処理を入れたりします。

 しかし、マイクロソフトとしてはなるべく多くのアプリケーションが動いて欲しいため、Windows 7のメジャーバージョン番号を「7.0」にするのではなく、「6.1」とすることで、アプリケーションが正しく動作するようにしているのです。、

inserted by FC2 system