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

求助:修复PowerShell查询NVMe驱动版本的兼容问题

解决PowerShell单NVMe设备时驱动版本获取不全的问题

问题根源在于:当只有一个匹配的AWS NVMe设备时,Get-WmiObject返回的是单个对象而非数组,此时$NVME.driverversion是字符串类型,你用[0]会取字符串的第一个字符(也就是版本号的首字符“1”);而多个设备时返回的是对象数组,$NVME.driverversion会自动转为字符串数组,[0]能正确取到第一个设备的完整版本。

修改后的代码方案

方案1:强制转为数组(兼容单/多设备场景)

# 用@()强制将结果转为数组,确保单对象时也按数组逻辑处理
$NVME = @(Get-WmiObject win32_PNPSignedDriver | Where-Object { $_.devicename -like "*AWS NVMe" } | Select-Object devicename, driverversion)

# 获取所有匹配设备的驱动版本(单设备时是单个字符串,多设备时是字符串数组)
$NVMEVersion = $NVME.driverversion

# 如果只需要第一个设备的版本,依然可以用[0],此时单设备时也能取完整版本
# $NVMEVersion = $NVME.driverversion[0]

方案2:直接展开驱动版本属性(更简洁)

如果只需要驱动版本,不需要设备名称,可以直接用Select-Object -ExpandProperty提取版本:

$NVMEVersion = Get-WmiObject win32_PNPSignedDriver | Where-Object { $_.devicename -like "*AWS NVMe" } | Select-Object -ExpandProperty driverversion

方案3:遍历输出每个设备的信息(更直观)

如果需要同时查看设备名称和对应版本,可以遍历处理:

$NVME = @(Get-WmiObject win32_PNPSignedDriver | Where-Object { $_.devicename -like "*AWS NVMe" } | Select-Object devicename, driverversion)

foreach ($device in $NVME) {
    Write-Host "设备名称: $($device.devicename)`n驱动版本: $($device.driverversion)`n"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:20:05