是否有人使用脚本扫描网络以获取主机列表,以确定是否已安装HP Fortify软件并提供该版本?
我尝试使用PowerShell脚本扫描注册表的添加/删除部分,但Fortify不会出现在那里。
非常感谢任何帮助!
答案 0 :(得分:2)
您至少有3种方法可以完成此任务。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
和HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
(在64位Windows版本上):如果程序已使用安装程序安装,则应在此处列出。以下是如何开始的:
$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)" }
}
}
Win32_Product
WMI类(速度较慢,而不是所有程序都显示在此处): Get-WmiObject -ComputerName "127.0.0.1" -Class Win32_Product | Select Name,Version
C:\Program Files\HP_Fortify
目录中找到包含所需版本的可执行文件(或远程计算机的\\$computerName\c$\Program Files\HP_Fortify
)。您将能够Get-Item
阅读所需文件的Version
属性。计算机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"
}