2015-10-26 41 views
-1

我试图将证书扩展收集到csv中。 PowerShell命令似乎在PowerShell中显示得很好,但是当连接到csv时,它们显示其他类型的数据?Powershell证书扩展export-csv

$cert = Get-ChildItem cert:\localmachine -Recurse 
($cert.Extensions | Where-Object {$_.Oid.FriendlyName -eq "Key Usage"}).Format(1) | Export-Csv C:\Folder\File.csv 

搜索我尝试不同的东西,但仍然在网络后无法获取数据得到捕获并因为它在PowerShell中不显示。

$cert=Get-ChildItem cert:\localmachine -Recurse   
$sanExt=$cert.Extensions | Where-Object {$_.Oid.FriendlyName -match "subject alternative name"}    
$sanObjs = new-object -ComObject X509Enrollment.CX509ExtensionAlternativeNames    
$altNamesStr=[System.Convert]::ToBase64String($sanExt.RawData)    
$sanObjs.InitializeDecode(1, $altNamesStr)    
Foreach ($SAN in $sanObjs.AlternativeNames) {$SAN.strValue} 
$sanExt.Format(1) | Export-Csv C:\Folder\File.csv 
+1

PowerShell中的证书对象包含几个嵌套的对象和数组。因此,它们不适合简单地管道传输到CSV文件。如果要保留所有信息,导出到支持此类结构的JSON或XML将是更好的选择。你试图导出什么属性? – TheMadTechnician

+0

感谢您的时间TheMadTechnician,这是我的情况不幸。我试图收集安装在LocalMachine商店中的每个CA的所有X.509扩展。虽然我不熟悉导出为JSON或XML,但您是否有我可以参考的示例? – wieljer

+0

导出为JSON非常简单:'$ cert | ConvertTo-JSON |设置内容C:\路径\到\ File.txt'我认为一个更好的问题将是保存这一切到文件的原因。这是为了人类的眼睛,还是在某些时候会被脚本/应用程序消化? – TheMadTechnician

回答

0

为他人寻找也收集扩展字段,这是我的决心:

$cert = Get-ChildItem cert:\localmachine -Recurse 
($cert.Extensions | Where-Object {$_.Oid.FriendlyName -eq "Key Usage"}).Format(1) | 
Select-Object -Property @{Name="Certificate";Expression={$_}} | 
Export-csv -Path C:\Folder\file.csv`