我正在写一个powershell脚本,将为我的webapp安装一些依赖关系。在我的脚本中,我遇到了一个反复检查特定应用程序是否安装的问题。似乎有一种独特的方式来检查每个应用程序是否存在应用程序(即:通过检查此文件夹或此文件的现有存在:)。是否没有办法通过查询已安装的应用程序列表来检查应用程序是否已安装?我如何检查是否安装了特定的MSI?
6
A
回答
10
这里是我有时使用的代码(不要过于频繁,所以...)。详细信息请参阅帮助注释。
<#
.SYNOPSIS
Gets uninstall records from the registry.
.DESCRIPTION
This function returns information similar to the "Add or remove programs"
Windows tool. The function normally works much faster and gets some more
information.
Another way to get installed products is: Get-WmiObject Win32_Product. But
this command is usually slow and it returns only products installed by
Windows Installer.
x64 notes. 32 bit process: this function does not get installed 64 bit
products. 64 bit process: this function gets both 32 and 64 bit products.
#>
function Get-Uninstall
{
# paths: x86 and x64 registry keys are different
if ([IntPtr]::Size -eq 4) {
$path = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
}
else {
$path = @(
'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
)
}
# get all data
Get-ItemProperty $path |
# use only with name and unistall information
.{process{ if ($_.DisplayName -and $_.UninstallString) { $_ } }} |
# select more or less common subset of properties
Select-Object DisplayName, Publisher, InstallDate, DisplayVersion, HelpLink, UninstallString |
# and finally sort by name
Sort-Object DisplayName
}
Get-Uninstall
4
让你的脚本扫描:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
set-location HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall
Get-ChildItem | foreach-object { $_.GetValue("DisplayName") }
12
要获取安装的应用程序的列表尝试:
$r = Get-WmiObject Win32_Product | Where {$_.Name -match 'Microsoft Web Deploy' }
if ($r -ne $null) { ... }
参见Win32_Product的文档获取更多信息。
相关问题
- 1. 如何检测Windows中是否安装了特定的软件?
- 2. 检查eclipse中是否安装了特定的插件
- 3. 检查设备上是否安装了特定证书
- 4. 如何检查我的电脑上是否安装了mongodb
- 5. 如何检查是否闪光的特定版本安装
- 6. 如何检查是否使用Ant安装了特定的Django应用程序?
- 7. 如何检查是否使用java,Linux安装了特定的软件
- 8. 如何我可以检查是否安装了应用程序
- 9. 如何检查我是否已正确安装了pymunk
- 10. 检测是否需要MSI安装
- 11. 如何检测是否安装了System.Web.Mvc.dll?
- 12. 如何检测是否安装了numpy
- 13. 检查是否安装了sqlite.net 3.5
- 14. 检查是否安装了软件包
- 15. GWT检查是否安装了闪存
- 16. 检查Java是否安装了Bash
- 17. 检查是否安装了dll
- 18. gwt检查是否安装了jre
- 19. 检查是否安装了Yahoo Messenger
- 20. 检查是否安装了咕噜声?
- 21. 检查是否安装了J#框架
- 22. 检查是否安装了memcached?
- 23. 如何检查特定库是否安装在我的系统中?
- 24. Wix-Msi:如何检查msi数据表中是否存在特定行
- 25. 如何检查GooglePlayServices是否安装了3.0以下的Android(FragmentActivity)
- 26. 检查用户是否安装了我的Firefox扩展程序
- 27. 如何检查Facebook是否安装Android
- 28. 如何检查Suhosin是否安装?
- 29. 如何检查插件是否安装?
- 30. 如何检查sqlite2是否已安装?
请注意,如果在安装程序数据库中发现错误,Get-WmiObject Win32_Product可能会修改目标系统。这很简单,并且是一个非常有用的功能。但是,如果您不仅仅是使用它来检测已安装的应用程序,还可以做好更多的工作。 – 2014-09-03 13:38:49