找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 1460|回复: 1

[问题求助] PowerShell检测浏览器是否安装的方法

[复制链接]
发表于 2025-10-2 10:43:36 | 显示全部楼层 |阅读模式
下面这方法检测不生效, 怎样解决?
  1. $browsers = @("chrome.exe","firefox.exe","msedge.exe","iexplore.exe")
  2. $installedBrowsers = @()
  3. foreach ($browser in $browsers) {
  4.     $paths = Get-Command $browser -ErrorAction SilentlyContinue
  5.     if ($paths) { $installedBrowsers += $browser }
  6. }
  7. if ($installedBrowsers.Count -gt 0) { echo "已安装的浏览器有:"; $installedBrowsers } else { echo "未检测到常见浏览器的安装。" }
复制代码
 楼主| 发表于 2025-10-2 10:45:20 | 显示全部楼层
本帖最后由 小白龙 于 2025-10-2 10:49 编辑

用下面的方法解决了, 但是有更简单的吗?
  1. # 定义浏览器在注册表中显示的名称
  2. $registryNames = @("Google Chrome", "Mozilla Firefox", "Microsoft Edge", "Internet Explorer")

  3. # 创建一个空数组,用于存放结果(包含名称和路径)
  4. $installedBrowsers = @()

  5. # 遍历两个主要的注册表位置(32位和64位程序)
  6. $registryPaths = @(
  7.     "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*",
  8.     "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*"
  9. )

  10. # 获取所有已安装程序的信息
  11. $installedPrograms = Get-ItemProperty $registryPaths -ErrorAction SilentlyContinue

  12. # 检查每个目标浏览器是否在已安装程序列表中
  13. foreach ($name in $registryNames) {
  14.     # 找到匹配的程序项
  15.     $program = $installedPrograms | Where-Object { $_.DisplayName -eq $name }
  16.    
  17.     if ($program) {
  18.         # 将注册表名称映射回友好的名称和可执行文件名
  19.         $browserInfo = switch ($name) {
  20.             "Google Chrome" {
  21.                 @{ Name = "Google Chrome"; Executable = "chrome.exe"; Path = $program.InstallLocation }
  22.             }
  23.             "Mozilla Firefox" {
  24.                 @{ Name = "Mozilla Firefox"; Executable = "firefox.exe"; Path = $program.InstallLocation }
  25.             }
  26.             "Microsoft Edge" {
  27.                 @{ Name = "Microsoft Edge"; Executable = "msedge.exe"; Path = $program.InstallLocation }
  28.             }
  29.             "Internet Explorer" {
  30.                 # IE的路径比较特殊,通常在系统目录
  31.                 @{ Name = "Internet Explorer"; Executable = "iexplore.exe"; Path = "$env:ProgramFiles\Internet Explorer" }
  32.             }
  33.         }
  34.         # 将找到的浏览器信息添加到结果数组中
  35.         $installedBrowsers += $browserInfo
  36.     }
  37. }

  38. # 输出结果
  39. if ($installedBrowsers.Count -gt 0) {
  40.     Write-Host "已检测到以下浏览器及其安装路径:" -ForegroundColor Green
  41.     # 遍历结果数组,格式化输出
  42.     $installedBrowsers | ForEach-Object {
  43.         # 检查路径是否存在,如果不存在则提示
  44.         $pathStatus = if (Test-Path $_.Path) { " (存在)" } else { " (路径未找到)" }
  45.         Write-Host "- $($_.Name): $($_.Path)$pathStatus"
  46.     }
  47. } else {
  48.     Write-Host "未检测到常见浏览器的安装。" -ForegroundColor Yellow
  49. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 19:19 , Processed in 0.016387 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表