>我有以下命令
Get-WindowsDriver -Online -All | where {$_.ClassName -like "Display"}
这给了我这样的结果
Driver : vrd.inf
OriginalFileName : C:WindowsSystem32DriverStoreFileRepositoryvrd.inf_amd64_3a0ba97737bffd01vrd.inf
Inbox : True
ClassName : Display
BootCritical : False
ProviderName : Microsoft
Date : 6/21/2006 12:00:00 AM
Version : 10.0.18362.329
Driver : wvmbusvideo.inf
OriginalFileName : C:WindowsSystem32DriverStoreFileRepositorywvmbusvideo.inf_amd64_483a786e00a2cb7awvmbusvideo.inf
Inbox : True
ClassName : Display
BootCritical : False
ProviderName : Microsoft
Date : 6/21/2006 12:00:00 AM
Version : 10.0.18362.1
现在我只想提取两个结果的 OriginalFileName 行,所以我的输出看起来像这样
OriginalFileName : C:WindowsSystem32DriverStoreFileRepositoryvrd.inf_amd64_3a0ba97737bffd01vrd.inf
OriginalFileName : C:WindowsSystem32DriverStoreFileRepositorywvmbusvideo.inf_amd64_483a786e00a2cb7awvmbusvideo.inf
现在要获得上述结果,我可以这样做
Get-WindowsDriver -Online -All | where {$_.ClassName -like "Display"} | findstr OriginalFileName
但是上述命令的问题在于 findstr 与我所阅读的内容相比有字符限制,因此某些路径被切断了。所以为了解决这个问题,我正在尝试使用选择字符串。这就是我正在做的
Get-WindowsDriver -Online -All | where {$_.ClassName -like "Display"} | Select-String -Pattern "OriginalFileName"
但我没有得到任何结果。关于我可能做错了什么的任何建议?
由于 Get-WindowsDriver 返回对象(Microsoft.Dism.Commands.BasicDriverObject 和/或 Microsoft.Dism.Command.AdvancedDriverObject(,因此不应使用 Select-String 来查找这些对象的单个属性。
只需像
(Get-WindowsDriver -Online -All | Where-Object {$_.ClassName -like "Display*"}).OriginalFileName
如果您希望输出看起来像PropertyName: PropertyValue
,您可以使用
Get-WindowsDriver -Online -All | Where-Object {$_.ClassName -like "Display*"} |
Select-Object OriginalFileName | Format-List
有时 findstr 是一种很好的搜索技术。/i
使其不区分大小写。
有时选择字符串或 { $_ -match 'whatever' } 工作的地方。 这取决于对象如何转换为字符串。
[pscustomobject]@{name='joe'},[pscustomobject]@{name='bill'} | select-string b
@{name=bill}
[pscustomobject]@{name='joe'},[pscustomobject]@{name='bill'} | where { $_ -match 'b' }
name
----
bill
不幸的是,get-windowsdriver 只是转换为"Microsoft.Dism.Command.BasicDriverObject":
$a = Get-WindowsDriver -Online -All | where ClassName -eq Display
$a[0].ToString()
Microsoft.Dism.Commands.BasicDriverObject
$a | select-string dism
Microsoft.Dism.Commands.BasicDriverObject
Microsoft.Dism.Commands.BasicDriverObject
Microsoft.Dism.Commands.BasicDriverObject