如果我们尝试使用已安装在服务器中的powershell安装软件,将会发生什么情况。例如,我的服务器中已经装有notepad ++,现在,我尝试使用Powershell在服务器中安装相同的notepad ++版本。那么输出是什么?此外,有没有办法可以确定服务器上是否已安装软件。
答案 0 :(得分:0)
安装程序的种类很多,但是大多数会在程序的“添加/删除”列表中添加记录,但是并不能保证。 Here is C++ code to scan the registry and check via WMI。您可以使用脚本来代替课程,但是查找安装的内容并不是一门精确的科学-有些安装程序是非常自定义和非标准的,并且遵循的准则很少。
注册表项 :
MSI软件包 :
对于MSI软件包,有多种方法可以检查是否安装了完全相同的版本或相关的版本。如果您拥有MSI的产品代码,则只需检查是否已按以下方式安装它:
Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
MsgBox installer.ProductState("{00000000-0000-0000-0000-000000000001}") ' <= PRODUCT CODE
您可以使用多种方法找到已安装的MSI的产品代码:How can I find the product GUID of an installed MSI setup?
如果您拥有一系列MSI的升级代码,则可以使用RelatedProducts方法来查找是否已安装相关产品:
Set installer = CreateObject("WindowsInstaller.Installer")
Set upgrades = installer.RelatedProducts("{UPGRADE-CODE-GUID-HERE}")
For Each u In upgrades
MsgBox u, vbOKOnly, "Product Code: "
Next
How can I find the Upgrade Code for an installed MSI file?。您可以通过使用Orca在“属性”表中查找来获得要安装的MSI的升级代码。
实用方法 :
一种选择是从每个安装中识别密钥文件,并使用所需的任何语言检查其存在-脚本将执行该操作。
Set fso = CreateObject("Scripting.FileSystemObject")
MsgBox fso.GetFileVersion("C:\Windows\System32\vcruntime140.dll")
The above script snippet from this rant on how to find the installed VCRedist version。
链接 :