为什么powershell不过滤对象的toString方法的输出?
Get-ChildItem cert:localmachinemy | % { Select-String -InputObject $_.ToString() -Pattern 'testcert' -SimpleMatch }
相反,我只是通过跑步得到我通常得到的一切
Get-ChildItem cert:localmachinemy | % { $_.ToString() }
我期望像grep
或findstring
一样,我会得到与正则表达式匹配的行。
有人会认为,一旦调用$_.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