あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

Windows10の.NET Frameworkのバージョンを取得するPowerShellスクリプト

Windows 10にインストールされている .NET Framework のバージョンを調べるのはなかなか難しいですよね。

以前は .NET Framework のバージョンを調べられるフリーウェアがあったのに、今はなくなってしまいました。

それで調べてみたところ、レジストリの値で .NET Framework のバージョンを調べる方法を Microsoft が公開していました。

docs.microsoft.com

C#のプログラムが公開されていたのですがビルドが面倒なので、そのプログラムを PowerShell に移植したものを公開します。

#
#  Windows 10にインストールされている.NET Frameworkのバージョンを調べるスクリプト ver.1.0
#  

function CheckFor45PlusVersion($releaseKey) {
  if ($releaseKey -ge 528040) {
    return "4.8 or later"
  }
  if ($releaseKey -ge 461808) {
    return "4.7.2"
  }
  if ($releaseKey -ge 461308) {
    return "4.7.1"
  }
  if ($releaseKey -ge 460798) {
    return "4.7"
  }
  if ($releaseKey -ge 394802) {
    return "4.6.2"
  }
  if ($releaseKey -ge 394254) {
    return "4.6.1"
  }
  if ($releaseKey -ge 393295) {
    return "4.6"
  }
  if ($releaseKey -ge 379893) {
    return "4.5.2"
  }
  if ($releaseKey -ge 378675) {
    return "4.5.1"
  }
  if ($releaseKey -ge 378389) {
    return "4.5"
  }
 
  return "No 4.5 or later version detected";
}

$subkey = 'SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\'

$ndpKey = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry32).OpenSubKey($subkey)

if (-![string]::IsNullOrEmpty($ndpKey) -and -![string]::IsNullOrEmpty($ndpKey.GetValue("Release"))) {
  $version = CheckFor45PlusVersion($ndpKey.GetValue("Release"))
  echo ".NET Framework Version: $version."
} else {
  echo ".NET Framework Version 4.5 or later is not detected."
}

スクリプトを保存して実行した結果は以下のようになります。

PS > .\script.ps1
.NET Framework Version: 4.7.2.

ライセンスは、MITライセンスで公開します。