远程计算机Google Chrome版本获取脚本无返回值问题求助
问题排查与修复方案
你的脚本里$Version始终为空,核心原因很明确:Win32_Product这个WMI类只追踪通过Windows Installer(MSI)包安装的程序,而现在Google Chrome默认用的是自己的独立安装程序,根本不会出现在Win32_Product的结果里,自然拿不到版本号。
下面给你两个靠谱的替代方案,都是企业环境里常用的方法:
方案1:读取远程机器的注册表(推荐)
Chrome的版本信息会存在系统注册表的卸载项里,64位系统可能在32位兼容路径下,我们可以远程读取这些路径:
$machines = Get-content -Path C:\Users\user\Desktop\machines.txt ForEach($machine in $machines){ # 先尝试64位注册表路径,再尝试32位兼容路径 $regPaths = @( "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome", "HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome" ) $foundVersion = $null foreach($path in $regPaths){ try{ # 转换为远程注册表访问格式(把冒号换成$) $remotePath = "\\$machine\$($path.Replace(':', '$'))" $foundVersion = Get-ItemProperty -Path $remotePath -Name DisplayVersion -ErrorAction Stop | Select-Object -ExpandProperty DisplayVersion if($foundVersion){ break # 找到版本号就跳出循环,不用再试下一个路径 } } catch{ # 路径不存在就跳过,继续试下一个 continue } } if($foundVersion){ Write-Host "$machine - $foundVersion" }else{ Write-Host "$machine - 未找到Google Chrome,或无远程访问权限" } }
注意事项
- 运行脚本的账号需要有目标机器的管理员权限
- 目标机器必须开启
Remote Registry服务,且防火墙允许远程注册表访问
方案2:用WMI查询注册表项(更轻量化的远程调用)
如果不想依赖远程注册表服务,也可以直接通过WMI查询注册表值:
$machines = Get-content -Path C:\Users\user\Desktop\machines.txt ForEach($machine in $machines){ # 先查64位路径的版本号 $chromeInfo = Get-CimInstance -ComputerName $machine -ClassName Win32_RegistryValue -Filter "KeyPath='SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Google Chrome' and ValueName='DisplayVersion'" -Namespace root\cimv2 -ErrorAction SilentlyContinue # 没找到就查32位兼容路径 if(-not $chromeInfo){ $chromeInfo = Get-CimInstance -ComputerName $machine -ClassName Win32_RegistryValue -Filter "KeyPath='SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Google Chrome' and ValueName='DisplayVersion'" -Namespace root\cimv2 -ErrorAction SilentlyContinue } if($chromeInfo){ Write-Host "$machine - $($chromeInfo.Value)" }else{ Write-Host "$machine - 无法获取Chrome版本信息" } }
额外提示
如果Chrome是按用户单独安装(不是全局安装),版本信息会存在HKCU(当前用户注册表)下,这种情况远程读取需要对应用户的权限,操作难度会大很多——企业环境一般都是全局安装,所以上面的方案足够覆盖大部分场景。
内容的提问来源于stack exchange,提问作者Bishok
相关产品推荐
相关产品推荐

