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

如何遍历注册表值数组并结合If语句匹配驱动描述与路径

优化PowerShell脚本以筛选含Ethernet的网卡驱动注册表信息

你的原始脚本存在两个问题:一是仅收集了驱动描述文本,未关联对应的注册表路径;二是代码重复冗余,维护性差。以下是优化后的实现,可同时获取符合条件的驱动描述及其注册表路径:

# 定义网卡类的基础注册表路径
$basePath = "HKLM:\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}"

# 遍历0000到0008的子项
$driverInfo = 0..8 | ForEach-Object {
    $subPath = Join-Path -Path $basePath -ChildPath ("{0:D4}" -f $_)
    try {
        # 获取驱动描述,同时保留注册表路径
        $desc = Get-ItemPropertyValue -Path $subPath -Name "DriverDesc" -ErrorAction Stop
        [PSCustomObject]@{
            RegistryPath = $subPath
            DriverDesc   = $desc
        }
    }
    catch {
        # 忽略不存在的子项或无DriverDesc的情况
        Write-Verbose "无法读取路径: $subPath"
    }
}

# 筛选出驱动描述包含"Ethernet"的条目
$ethernetDrivers = $driverInfo | Where-Object { $_.DriverDesc -like "*Ethernet*" }

# 输出结果
$ethernetDrivers

关键说明:

  • 用0..8循环生成子项编号,结合Join-Path拼接完整路径,避免重复编写9次相同逻辑
  • 通过PSCustomObject将注册表路径和驱动描述绑定,确保两者关联不丢失
  • 加入try/catch块处理可能的路径不存在或权限问题,提升脚本健壮性
  • 用Where-Object精准筛选符合条件的条目,直接输出包含路径和描述的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:09:25