2015-10-26 129 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`