【问题标题】:Powershell Certificate Extensions export-csvPowershell 证书扩展 export-csv
【发布时间】:2015-10-26 20:58:37
【问题描述】:

我正在尝试将证书扩展收集到 csv 中。 PowerShell 命令似乎在 PowerShell 中显示得很好,但是当通过管道传输到 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

【问题讨论】:

  • powershell 中的证书对象包含多个嵌套对象和数组。因此,它们不太适合简单地通过管道传输到 CSV 文件。如果您想保留所有信息,导出到支持此类结构的 JSON 或 XML 将是更好的选择。您到底想导出哪些属性?
  • 感谢您抽出宝贵时间 TheMadTechnician,这对我的情况来说很不幸。我正在尝试收集安装在 LocalMachine 商店上的每个 CA 的所有 X.509 扩展。不过我不熟悉导出到 JSON 或 XML,你有我可以参考的例子吗?
  • 导出到 JSON 非常简单:$cert | ConvertTo-JSON | Set-Content C:\Path\To\File.txt 我认为一个更好的问题是将这一切保存到文件中的原因。它是针对人眼的,还是会在某个时候被脚本/应用程序消化?
  • 感谢 TheMadTechnician 的回复。是的,数据被消化到 Splunk> 以进行可视化。我将运行您的代码,看看它的外观:) 在另一个说明中,我今天确实找到了这个博客,它帮助解释了为什么 PowerShell 中的数据的格式与通过管道传输到 csv 时的数据格式不同。我对powershell比较陌生,所以这有助于我了解更多。 windowsitpro.com/powershell/powershell-objects-and-output
  • TheMadTechnician,我能够将数据转换为 JSON 格式,遗憾的是数据仍然是整数格式。但是我确实成功地导出到 csv。经过一段时间在其他以 PowerShell 为重点的社区论坛上进行探索和发布后,我找到了解决问题的方法。这使我还可以根据需要将数据格式化为 csv,以便稍后消化到 Splunk> $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

标签: csv powershell x509certificate export-to-csv


【解决方案1】:

对于希望也收集扩展字段的其他人,这是我的解决方案:

$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`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 2016-12-28
    • 2010-10-09
    • 2018-02-08
    • 2020-12-03
    • 2016-04-30
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多