我想要扫描并建立域中某个站点的计算机上安装的 Adobe Reader 版本的列表。
我正在使用演示沙夫利克·内奇克(商业软件)效果很好,但我认为这个任务可以通过批处理文件来执行。
有两个注册表项需要检测:
- HKEY_CURRENT_USER\SOFTWARE\Adobe\Acrobat Reader\10.0
- 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。