为什么 Select-String 不过滤 ToString() 方法的输入?



为什么powershell不过滤对象的toString方法的输出?

Get-ChildItem cert:localmachinemy | % { Select-String -InputObject $_.ToString() -Pattern 'testcert' -SimpleMatch }

相反,我只是通过跑步得到我通常得到的一切

Get-ChildItem cert:localmachinemy | % { $_.ToString() }

我期望像grepfindstring一样,我会得到与正则表达式匹配的行。

有人会认为,一旦调用$_.ToString(),你只会得到字符串输出......相反,我只是获取对象还是字符串数组?

>Select-String适用于单个字符串...而你只是给了它 - 单独的多行字符串。[咧嘴一笑]

如果要匹配证书属性中的某个字符串,请使用 Where-Object {$_.PropName -match 'TestValue'} 获取包含命名 prop 中的测试值的对象。

Lee_Daily已经为您提供了答案,但您还完成了以下操作...

(Get-ChildItem cert:localmachinemy) -match 'testcert'

我的一台测试计算机上的示例

Get-ChildItem cert:localmachinemy

PSParentPath: Microsoft.PowerShell.SecurityCertificate::localmachinemy
Thumbprint    Subject 
----------    ------- 
FEB8E79E06... CN=NVIDIA GameStream Server         
D2D983C386... CN=Windows Admin Center             
96A0413F93... CN=Windows Admin Center             
5299896B41... CN=localhost                        

(Get-ChildItem cert:localmachinemy) -match 'admin'

PSParentPath: Microsoft.PowerShell.SecurityCertificate::localmachinemy
Thumbprint    Subject 
----------    ------- 
D2D983C386... CN=Windows Admin Center             
96A0413F93... CN=Windows Admin Center             

(Get-ChildItem cert:localmachinemy) -match 'localhost'

PSParentPath: Microsoft.PowerShell.SecurityCertificate::localmachinemy
Thumbprint    Subject 
----------    ------- 
5299896B41... CN=localhost

相关内容

  • 没有找到相关文章

最新更新