检测远程计算机上是否安装了HP Fortify

时间:2015-12-07 14:14:13

标签: powershell fortify installed-applications

是否有人使用脚本扫描网络以获取主机列表,以确定是否已安装HP Fortify软件并提供该版本?

我尝试使用PowerShell脚本扫描注册表的添加/删除部分,但Fortify不会出现在那里。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

您至少有3种方法可以完成此任务。

  1. 使用注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninst‌​all(在64位Windows版本上):如果程序已使用安装程序安装,则应在此处列出。
  2. 以下是如何开始的:

    $base = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, $ComputerName)
    if($key = $base.OpenSubKey("SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall")) {
        foreach($subkey in $key.GetSubKeyNames()) {
            $name = ($key.OpenSubKey($subkey)).GetValue("DisplayName")
            $version = ($key.OpenSubKey($subkey)).GetValue("DisplayVersion")
            if($name) { "$name ($version)" }
        }
    }
    
    1. 使用Win32_Product WMI类(速度较慢,而不是所有程序都显示在此处):
    2. Get-WmiObject -ComputerName "127.0.0.1" -Class Win32_Product | Select Name,Version

      1. 使用应用程序本身的文件,在C:\Program Files\HP_Fortify目录中找到包含所需版本的可执行文件(或远程计算机的\\$computerName\c$\Program Files\HP_Fortify)。您将能够Get-Item阅读所需文件的Version属性。
      2. 计算机C:\Program Files\HP_Fortify\main_service.exe上的示例路径SERVER001

        $computerName = "SERVER001"
        $exePath = "\\$computerName\c$\Program Files\HP_Fortify\main_service.exe"
        
        if(Test-Path $exePath) {
            (Get-Item $exePath).VersionInfo.ProductVersion
        } else {
            "file not found: $exePath"
        }
        
相关问题