在多台计算机上批量检测 Adob​​e Reader 版本

在多台计算机上批量检测 Adob​​e Reader 版本

我想要扫描并建立域中某个站点的计算机上安装的 Adob​​e Reader 版本的列表。

我正在使用演示沙夫利克·内奇克(商业软件)效果很好,但我认为这个任务可以通过批处理文件来执行。

有两个注册表项需要检测:

  1. HKEY_CURRENT_USER\SOFTWARE\Adobe\Acrobat Reader\10.0
  2. HKEY_CURRENT_USER\SOFTWARE\Adobe\Acrobat Reader\9.0

我只是 Windows 脚本方面的新手。

答案1

最简单的方法可能是使用 PowerShell。HKLM 节点不会包含所有子键,但如果您将它们放在那里,它就可以正常工作。

脚本的这一部分获取版本:

$SoftwareKey = "HKLM:\Software" 
if ((Get-WmiObject Win32_OperatingSystem).OSArchitecture -match "64-bit") { $SoftwareKey = "HKLM:\Software\WOW6432Node" } 

if (Test-Path "$SoftwareKey\adobe\Acrobat Reader") { 
$adobeversion = get-childitem "$SoftwareKey\adobe\Acrobat Reader" 
foreach ($version in $adobeversion) { 
Write-Output "Found verstion $($version.PSChildName) of Adobe Reader" 
} 
}

这是一个较大脚本的一部分,该脚本在应用更新后运行时会自动接受 EULA,从而将读者带到新版本。整个脚本如下:

$SoftwareKey = "HKLM:\Software" 
if ((Get-WmiObject Win32_OperatingSystem).OSArchitecture -match "64-bit") { $SoftwareKey = "HKLM:\Software\WOW6432Node" } 

if (Test-Path "$SoftwareKey\adobe\Acrobat Reader") { 
$adobeversion = get-childitem "$SoftwareKey\adobe\Acrobat Reader" 
foreach ($version in $adobeversion) { 
if ((Test-Path "$($version.PSPath)\AdobeViewer") -eq $false) {New-Item "$($version.PSPath)\AdobeViewer"} 
New-ItemProperty -Path "$($version.PSPath)\AdobeViewer" -PropertyType DWORD -Value 1 -Name EULA -force 
} 

答案2

可以使用批处理脚本来完成,方法是检查注册表项或在磁盘上查找文件并获取其版本filever.exe

但说实话,我认为最简单的方法是使用审计软件,审计系统是免费软件,只需将其添加到客户端机器的登录脚本中。

因为您特别询问了批处理脚本,这将查询注册表项,您需要将其循环遍历域中的所有工作站:

reg query "\\[hostname or IP]\HKLM\SOFTWARE\Adobe\Acrobat Reader"

您需要检查 HKLM 键,因为只有机器的当前用户才能轻松访问 HKCU。

答案3

Shavlik 是一款出色的部署和软件状态感知工具。

它还具有报告功能(我使用时并没有用到),但它应该能够向您提供一份可导出的报告,显示您的环境中 Adob​​e Reader 的版本。

根据文献:
-报告概述
-导出报告

您需要转到“工具”-“创建报告”。在“资产报告”下应该有一份名为“软件目录”的报告。运行此报告。

然后通过选择文件 - 导出来导出报告,选择相关报告,然后保存。

在 Excel 中筛选此报告以获得适当和所需的软件类型应该不太难,因为它应该包含软件名称和版本字段。

Shavlik 的软件感知相当准确,我发现它并不容易出现错误或产生虚假信息。

相关内容