You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何匹配WMI获取的显卡名称与文本文件字符串并输出Quadro?

解决显卡型号与文件列表匹配的PowerShell脚本问题

原脚本的问题

  • 变量名错误:定义的显卡变量是$GCard,但判断时误用了$MyCard,直接导致匹配逻辑失效。
  • 未处理文件中的引号:文件内容是引号包裹的型号列表,直接用整行匹配会包含引号,无法和显卡名称(如NVIDIA Quadro K420)正常匹配。
  • 未考虑多显卡场景:Get-WmiObject可能返回多个显卡对象,需要遍历处理所有显卡。

修正后的可运行脚本

# 获取本机所有显卡名称,推荐用Get-CimInstance替代Get-WmiObject(更现代且兼容性更好)
$gCards = (Get-CimInstance Win32_VideoController).Name

# 读取文件内容,提取所有双引号内的显卡型号
$driverModels = Get-Content -Path "C:\temp\Quadro473.81.txt" | ForEach-Object {
    # 用正则匹配双引号内的内容,捕获组提取纯型号
    if ($_ -match '"([^"]+)"') {
        $matches[1]
    }
}

# 遍历每个显卡,与提取的型号列表匹配
foreach ($card in $gCards) {
    # 支持精确匹配或模糊匹配,按需选择
    if ($driverModels -contains $card -or $driverModels | Where-Object { $card -like "*$_*" }) {
        Write-Host "Quadro"
        # 匹配到后可直接退出循环(如果只需要一次匹配结果)
        break
    }
}

关键细节说明

  • 提取引号内容:通过正则表达式"([^"]+)"匹配每行中的双引号区域,捕获组$matches[1]会返回去掉引号的纯型号文本。
  • 多显卡兼容:将显卡名称存储为数组,遍历每个显卡进行匹配,避免遗漏多显卡场景。
  • 匹配逻辑灵活:如果文件中的型号是完整名称(如"NVIDIA Quadro K420"),用-contains精确匹配更准确;如果是简写型号(如"K420"),则用-like模糊匹配。

内容的提问来源于stack exchange,提问作者unitechie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 03:24:37