检测远程计算机上是否安装了 HP Fortify
Detect if HP Fortify is installed on remote computers
是否有人有脚本来扫描网络以获取主机列表以确定是否安装了 HP Fortify 软件并提供版本?
我尝试使用 PowerShell 脚本扫描注册表的 add/remove 部分,但那里没有出现 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 class(较慢,并非所有程序都出现在这里):
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
属性。
计算机 SERVER001
上的示例路径 C:\Program Files\HP_Fortify\main_service.exe
:
$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"
}
是否有人有脚本来扫描网络以获取主机列表以确定是否安装了 HP Fortify 软件并提供版本?
我尝试使用 PowerShell 脚本扫描注册表的 add/remove 部分,但那里没有出现 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 class(较慢,并非所有程序都出现在这里):
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
属性。
计算机 SERVER001
上的示例路径 C:\Program Files\HP_Fortify\main_service.exe
:
$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"
}