2016-03-02 74 views
1

我需要以编程方式确定是否涉及特定证书,这是微不足道的。但是,我想输出到只有包含所述证书的主题行。PowerShell:从输出中解析特定项目格式化为列表

使用下面的,我可以得到安装证书的列表:

GET-ChildItem -Recurse证书:

======================================================================== 

Subject  : CN=VeriSign Class 3 Public Primary Certification Authority - G5 
Issuer  : CN=VeriSign Class 3 Public Primary Certification Authority - G5 
Thumbprint : 4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5 
FriendlyName : VeriSign 
NotBefore : 11/7/2006 6:00:00 PM 
NotAfter  : 7/16/2036 6:59:59 PM 
Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid} 

Subject  : CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, S=Arizona, C=US 
Issuer  : CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, S=Arizona, C=US 
Thumbprint : 47BEABC922EAE80E78783462A79F45C254FDE68B 
FriendlyName : Go Daddy Root Certificate Authority – G2 
NotBefore : 8/31/2009 7:00:00 PM 
NotAfter  : 12/31/2037 5:59:59 PM 
Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid} 

Subject  : CN=StartCom Certification Authority, OU=Secure Digital  Certificate Signing, O=StartCom Ltd., C=IL 
Issuer  : CN=StartCom Certification Authority, OU=Secure Digital Certificate Signing, O=StartCom Ltd., C=IL 
Thumbprint : 3E2BF7F2031B96F38CE6C4D8A85D3E2D58476A0F 
FriendlyName : StartCom Certification Authority 
NotBefore : 9/17/2006 2:46:36 PM 
NotAfter  : 9/17/2036 2:46:36 PM 
Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid.} 

使用这个我只能找到一个章节特定字符串:

Get-ChildItem -Recurse Cert:|选择字符串“CN =转到爸爸根证书颁发机构”

======================================================================== 

Subject  : CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, S=Arizona, C=US 
Issuer  : CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, S=Arizona, C=US 
Thumbprint : 47BEABC922EAE80E78783462A79F45C254FDE68B 
FriendlyName : Go Daddy Root Certificate Authority – G2 
NotBefore : 8/31/2009 7:00:00 PM 
NotAfter  : 12/31/2037 5:59:59 PM 
Extensions : {System.Security.Cryptography.Oid, System.Security.Cryptography.Oid, System.Security.Cryptography.Oid} 

不过,我想获得“主题”行,以便我的输出是一个单行。理想情况下,输出看起来像

CN=Go Daddy Root Certificate Authority - G2, O="GoDaddy.com, Inc.", L=Scottsdale, S=Arizona, C=US 

但只要单行输出只包含有问题的证书,结果是好的。

回答

4

你可以这样做:

Get-ChildItem -Recurse Cert: | Where-Object { $_.Subject -like 'CN=Go Daddy Root Certificate Authority*' } | Select Subject 

使用选择字符串使你失去你感兴趣的对象,那么你就留下来处理字符串。

请注意,您可以通过在类似比较中使用其他属性(例如FriendlyName)来查找要查找的特定证书。例如:

Get-ChildItem -Recurse Cert: | Where-Object { $_.FriendlyName -like 'Go Daddy Root Certificate Authority*' } | Select Subject