[PowerShell]取得Windows .NET Framework版本資訊

這禮拜third-party提供了新的dll參考元件更新,沒預料是最新的.NET 4.6版本,但原本負責系統提供給客戶的工具是.NET 4.0,沒辦法引用客戶採購的元件,因此需要把工具重新用4.6編譯。

佈署前,生產環境也是需要確認,從msdn及google找到幾種取得機器上的.NET Framework有4個方式,今天先筆記3種,下一篇筆記用.NET程式的作法。

  • registry query
  • Registry GUI
  • PowerShell command(Get-ChildItem)

以下資訊適用.NET 4以後的版本喔!

 

1.開啟命令提示字元執行以下registry query命令,就可以知道目前server 所安裝的.NET Framework Full版本是哪一個?

reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\full" /v version

2. Registry GUI查詢

a.開始功能表輸入Regedit

b.開啟登入編輯程式(Regedit)後,在編輯頁簽尋找 NET Framework Setup

c.找到目錄後進入 \NDP\v4\Full 找到Release,後方鍵值資料中的十進位(394271)就是.NET版本號

d最後到msdn可以發現幾個常見的版本鍵值Release DWORD)

Value of the Release DWORD

Version

378389

.NET Framework 4.5

378675

.NET Framework 4.5.1 installed with Windows 8.1 or Windows Server 2012 R2

378758

.NET Framework 4.5.1 installed on Windows 8, Windows 7 SP1, or Windows Vista SP2

379893

.NET Framework 4.5.2

On Windows 10 systems: 393295

On all other OS versions: 393297

.NET Framework 4.6

On Windows 10 November Update systems: 394254

On all other OS versions: 394271

.NET Framework 4.6.1

On Windows 10 Insider Preview Build 14295: 394747

On all other OS versions: 394748

.NET Framework 4.6.2 Preview

https://msdn.microsoft.com/en-us/library/hh925568#net_b

 

3.最後一種PowerShell command,也是今天的重頭戲。

開啟powershell ,並執行以下script

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!1)'} |
Select PSChildName, Version, Release

a.Script以遞迴的方式取得NDP目錄下的資訊

b.取得屬性(itemProperty)、名稱(name)及版號(Release)

c.排除1打頭的資訊(1028、1033)

d.取出資料

(連wcf、wpf都取出來了)

小結:

技術的世界日新月異,早上划龍舟手很酸,晚一點再來筆記用C#(Microsoft.Win32)取資訊。

 

 

參考:

https://technet.microsoft.com/en-us/library/cc742028(v=ws.11).aspx

https://msdn.microsoft.com/en-us/library/hh925568#net_b

http://stackoverflow.com/questions/1565434/how-to-find-the-net-version