【发布时间】:2019-05-27 18:08:46
【问题描述】:
我构建了这个,运行良好,运行和显示大约需要 7-9 秒。 我想知道,是否有更快/最佳的方式来构建这个自定义对象?
如您所见,我想要来自 Win32_PNPsigneddriver 的所有驱动程序信息,但除此之外,我还根据 DeviceID 添加了来自 Win32_PNPentity 的另外两个属性(configmanagererrorcode 和 status)。
这样,最终对象包含所有驱动程序,并显示使用该驱动程序的设备是否存在错误。
$poste = "COMPUTER1234"
$DriversUp = Get-WmiObject -computername $poste Win32_PNPsigneddriver |
Where-Object {$_.DeviceName -ne $null}
$Devices = Get-WmiObject -computername $poste Win32_PNPentity
$DriversDevices = foreach ($driver in $DriversUp) {
$driver |
Select-Object DeviceClass, Manufacturer, DeviceName,
FriendlyName, DriverName, InfName,
@{name='Status';expression={$Devices | Where-Object {$_.DeviceID -eq "$($driver.DeviceID)"} | Select-Object -ExpandProperty status}},
@{name='ConfigManagerErrorCode';expression={$Devices | Where-Object {$_.DeviceID -eq "$($driver.DeviceID)"} | Select-Object -ExpandProperty ConfigManagerErrorCode}},
@{name='DriverDate';expression={[DateTime]::ParseExact(($_.DriverDate).Split('.')[0], "yyyyMMddHHmmss", [System.Globalization.CultureInfo]::InvariantCulture)}},
DriverVersion
}
$DriversDevices |
Sort-Object DeviceClass |
Out-GridView -Title "$poste - Drivers utilisés"
就像我说的,一切正常。不过,我很想知道是否有更快的方法!
【问题讨论】:
标签: powershell optimization foreach properties