是否有人有脚本来扫描网络以查找主机列表以确定是否安装了 HP Fortify 软件并提供版本?
我尝试使用扫描注册表的添加/删除部分的 PowerShell 脚本,但 Fortify 没有出现在那里。
任何帮助将不胜感激!
是否有人有脚本来扫描网络以查找主机列表以确定是否安装了 HP Fortify 软件并提供版本?
我尝试使用扫描注册表的添加/删除部分的 PowerShell 脚本,但 Fortify 没有出现在那里。
任何帮助将不胜感激!
您至少有 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"
}