微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Powershell静默安装问题

如何解决Powershell静默安装问题

如果我们尝试使用已安装在服务器中的powershell安装软件,将会发生什么情况。例如,我的服务器中已经装有notepad ++,现在,我尝试使用Powershell在服务器中安装相同的notepad ++版本。那么输出是什么?此外,有没有办法可以确定服务器上是否已安装软件。

解决方法

安装程序的种类很多,但是大多数会在程序的“添加/删除”列表中添加记录,但是并不能保证。 Here is C++ code to scan the registry and check via WMI。您可以使用脚本来代替课程,但是查找安装的内容并不是一门精确的科学-有些安装程序是非常自定义和非标准的,并且遵循的准则很少。

注册表项

  • HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Uninstall
  • HKLM \ SOFTWARE \ WOW6432Node \ Microsoft \ Windows \ CurrentVersion \ Uninstall

MSI软件包

对于MSI软件包,有多种方法可以检查是否安装了完全相同的版本或相关的版本。如果您拥有MSI的产品代码,则只需检查是否已按以下方式安装它:

Dim installer : Set installer = CreateObject("WindowsInstaller.Installer")
MsgBox installer.ProductState("{00000000-0000-0000-0000-000000000001}") ' <= PRODUCT CODE

Longer sample linked here

您可以使用多种方法找到已安装的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


链接

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。