如何将特定的WMIobject驱动程序解析为字符串?

时间:2019-03-08 07:12:15

标签: powershell

此操作的目的是从win32_PnPSignedDriver获取显示驱动程序版本。我被困在如何过滤掉它上。

我从How do I parse data from a Get-WMIObject query into a string?那里得到了一些想法,并对其进行了修改。但是,输出显示的是驱动程序版本信息的完整列表,但我只希望打印一份显示驱动程序版本。

是否想知道是否有使用Powershell的方法?我有一个基于代码的Powershell代码,它需要显示版本才能继续。

我使用的命令是

get-wmiobject -class win32_PnPSignedDriver | select deviceclass -expand DriverVersion

编辑:

预期输出应仅为其intel图形驱动程序的值,例如:10.18.15.4248 我需要将此值解析为一个变量,并将其与验证脚本中的已知固定值进行比较

1 个答案:

答案 0 :(得分:1)

通过基于DeviceClass过滤WMI结果来创建显示驱动程序的集合。从过滤的结果中选择描述和驱动程序版本。像这样

# Get all drivers that have display as deviceclass
$ds = gwmi -class win32_PnPSignedDriver | ? { $_.DeviceClass -eq "DISPLAY" }

# Select description and driver's version
$ds | select description,driverversion

description                     driverversion
-----------                     -------------
NVIDIA Quadro P500              24.21.13.9836
Intel(R) UHD Graphics 620       25.20.100.6472

编辑:要仅获取版本字符串而没有任何多余的内容,请像这样用foreach%处理结果,

# An empty array for the results
$versions = @()

# Add each version as new array element
$ds | % { $versions += $_.driverversion }

# Print results
$versions
24.21.13.9836
25.20.100.6472

# Access the 1st element
$versions[0]
24.21.13.9836

# See the result type
$versions[0].gettype()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object