案例場景
作為開發人員或者IT管理員的你,一個非常常見的場景是你需要知道你的或者客户的機器上安裝了哪些微軟.NET Framework的版本,有沒有比較好的快速的方法可以獲取所有的.NET Framework版本信息?
解決方案
方案是相當的多啊,比方説下面常見的:
- 使用Windows Explorer獲取
- 通過查看註冊表獲取
- 通過在Command Prompt運行命令行程序獲取
然“花有千百種,我只戀一隻”,今天我們這裏介紹一個及其有用的另外一種方式,使用PowerShell腳本獲取.NET Framework的版本號和SP服務補丁信息。
這個腳本的核心原理也是通過讀取註冊表,但畢竟不是每個人每天都要和註冊表打交道,像小編我這樣的,面對着註冊表一堆信息,那是兩眼一抹黑啊!!!所以有了這樣的一個直接可以運行的腳本,那就省事多啦~~
運行要求
咱是有要求的,機器上安裝了PowerShell那是必須滴!
如何使用?
- 去微軟的官方代碼庫下載這段腳本(很小,1.73K)解壓到桌面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