快速查詢主機目前安裝的 .NET 版本

工作上常遇到的需求:在陌生機器上想確認已安裝的 .NET Runtime 版本,只有 4.0,還是已升到 4.5.2 甚至 4.6?

MSDN 建議的官方做法是檢查 Registry,程式邏輯不複雜要自己寫個小工具並不困難,但每次測試得 Copy 程式檔太搞剛,於是我想到了 PowerShell!

在 Stackoverflow 找到網友分享用 Powershell 檢查 .NET 版本的範例

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^[^0-9S]'} |
Select PSChildName, Version, Release, @{
  name="Product"
  expression={
      switch -regex ($_.Release) {
        "378389" { [Version]"4.5" }
        "378675|378758" { [Version]"4.5.1" }
        "379893" { [Version]"4.5.2" }
        "393295|393297" { [Version]"4.6" }
        "394254|394271" { [Version]"4.6.1" }
        "394802|394806" { [Version]"4.6.2" }
        {$_ -gt 394806} { [Version]"Undocumented 4.6.2 or higher, please update script" }
      }
    }
}

註:Stackoverflow 上原本的寫法是 Where { $_.PSChildName -match '^(?!S)\p{L}'} ,用到的 Regular Expression 語法有點生澀難懂:^(?!S) 指明第一個字母不可是 S 以排除 Setup;\p{L} 則規定必須字母起首(參考:Unicode Category)排除 1033、1028 等語系代碼項目,我改用 ^[^0-9S] ,結果相同,但好記好懂許多。

測試成功!以上是我找到最快速查出 .NET 已安裝版本的方法。

歡迎推文分享:
Published 18 November 2016 09:05 PM 由 Jeffrey
Filed under:
Views: 4,532



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<November 2016>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication