2011-01-20 40 views

回答

10

我認爲你不能更改安裝文件夾的位置,那麼你很可能只是:

test-path "${Env:ProgramFiles(x86)}\Microsoft ASP.NET\ASP.NET MVC 3" 
3

另一種方式(不幸的是相當慢一點)是查詢WMI:

$res = Get-WmiObject Win32_Product | Where {$_.Name -match 'ASP\.NET MVC 3'} 
if ($res -ne $null) { ... } 
+0

我強烈建議避免使用Win32_Product。首先,它真的很慢(這個查詢可能需要幾分鐘)。其次,*你可以搞砸你的系統*,因爲Win32_Product類通過枚舉每個已安裝的MSI包來工作,這會導致重新配置和驗證(如果發現應用程序與原始MSI不一致,則會進行修復)http:///support.microsoft.com/kb/974524 – Jaykul 2011-01-21 19:46:39

+0

是的,我注意到它確實非常慢。很好地瞭解潛在的問題。不過,似乎應該有一個WMI方式來確定這一點。依賴註冊表鍵或路徑似乎有點脆弱。 – 2011-01-21 20:41:39

2

我很好奇,並且製作了一個Win32_AddRemovePrograms類http://poshcode.org/2470 ......這很有效,但說實話,您不需要檢查特定的產品,只需在註冊表中查找該產品的ID即可。

test-path "hklm:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA}" 

其中{DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA}是Asp.net MVC 3,你可能會增加一倍通過檢查它的顯示名稱檢查,以確保產品ID:

(Get-ItemProperty "hklm:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{DCDEC776-BADD-48B9-8F9A-DFF513C3D7FA}" DisplayName).DisplayName -eq "Microsoft ASP.NET MVC 3"