標籤:
代碼下載:本文提到的指令碼,可以從微軟的程式碼程式庫下載, How to determine versions & service pack levels of .NET Framework by Powershell
案例情境
作為開發人員或者IT管理員的你,一個非常常見的情境是你需要知道你的或者客戶的機器上安裝了哪些微軟.NET Framework的版本,有沒有比較好的快速的方法可以擷取所有的.NET Framework版本資訊?
解決方案
方案是相當的多啊,比方說下面常見的:
- 使用Windows Explorer擷取
- 通過查看註冊表擷取
- 通過在Command Prompt運行命令列程式擷取
然“花有千百種,我只戀一隻”,今天我們這裡介紹一個及其有用的另外一種方式,使用PowerShell指令碼擷取.NET Framework的版本號碼和SP服務補丁資訊。
這個指令碼的核心原理也是通過讀取註冊表,但畢竟不是每個人每天都要和註冊表打交道,像小編我這樣的,面對著註冊表一堆資訊,那是兩眼一抹黑啊!!!所以有了這樣的一個直接可以啟動並執行指令碼,那就省事多啦~~
運行要求
咱是有要求的,機器上安裝了PowerShell 2.0那是必須滴!
如何使用?
- 去微軟的官方程式碼程式庫下載這段指令碼(很小,1.73K)- https://gallery.technet.microsoft.com/How-to-determine-versions-d3669799. 解壓到案頭DetermineNetframeworkVersion.ps1。
- 用管理員的身份開啟PowerShell,然後運行下面這段命令:Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- 有提示後,輸入A
- 右擊剛剛下載的指令碼DetermineNetframeworkVersion.ps1, 在安全項中點擊 unblock並確認.
5. 最後運行指令碼.\DetermineNetframeworkVersion.ps1,並得到結果:
代碼學習
對於有上勁心的小猿們,不學習學習怎麼實現的怎麼放心呢:
Function Get-NETFrameworkVersion { $RegistryPrefix = "Registry::"; #4-Client Try { IF (((Get-ItemProperty -ErrorAction Stop -Path ($RegistryPrefix + "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client") | SELECT -ExpandProperty "Install") -eq 1) -and ((Get-ItemProperty -ErrorAction Stop -Path ($RegistryPrefix + "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client") | SELECT -ExpandProperty "Version") -eq "4.0.30319.0")) { Write-Host ".NET Framework 4 - Client"; } } Catch {} #4-Full Try { IF (((Get-ItemProperty -ErrorAction Stop -Path ($RegistryPrefix + "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full") | SELECT -ExpandProperty "Install") -eq 1) -and ((Get-ItemProperty -ErrorAction Stop -Path ($RegistryPrefix + "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full") | SELECT -ExpandProperty "Version") -eq "4.0.30319.0")) { Write-Host ".NET Framework 4 - Full"; } } Catch {} # ..... } Get-NETFrameworkVersion
如何用PowerShell列出你機器上的.NET Framework的版本號碼和SP服務補丁