哈希表导出数据的收集到CSV(Exporting Collection of Hashtable d

2019-09-02 02:18发布

我试图导出为CSV集合哈希表项目名称/值对。 在我还没有找到的代码的选择对象部分正确的语法。 我的CSV文件,以对URL和所有者columes。 谢谢您的帮助

[System.Collections.ArrayList]$collection = New-Object System.Collections.ArrayList($null)
$SiteInfo = @{};

$SiteInfo.Url = "http://some.url.com";
$SiteInfo.Owner = "Joe Smith";
$collection.Add($SiteInfo);

$SiteInfo.Url = "http://another.url.com";
$SiteInfo.Owner = "Sally Jones";
$collection.Add($SiteInfo);


$collection | foreach{
    $hashTableDate = $_;
    $hashTableDate | Select-Object -Property Url, Owner;
}| Export-Csv  "C:\UsageReport.csv" -NoTypeInformation -Encoding UTF8 -Delimiter '|'

# results: file is empty :(

Answer 1:

转换为PSObject,然后导出为CSV

所有这一切“的foreach”的东西是没有必要的。 只要你的哈希转换为PSObject然后导出!

此示例使用ArrayList中存储的哈希表,然后将导出的ArrayList到CSV。

[System.Collections.ArrayList]$collection = New-Object System.Collections.ArrayList($null)

$SiteInfo = @{}
$SiteInfo.Url = "http://some.url.com"
$SiteInfo.Owner = "Joe Smith"
$collection.Add((New-Object PSObject -Property $SiteInfo)) | Out-Null

$SiteInfo = @{}
$SiteInfo.Url = "http://another.url.com"
$SiteInfo.Owner = "Sally Jones"
$collection.Add((New-Object PSObject -Property $SiteInfo)) | Out-Null


$collection | Export-Csv  "UsageReport.csv" -NoTypeInformation -Encoding UTF8 -Delimiter '|'

事情将无法正常工作。

请注意,虽然该作品在这里:

$collection.Add((New-Object PSObject -Property $SiteInfo))

......这里有一些东西是行不通的:

  • 留出一组括号将不起作用:

     $collection.Add(New-Object PSObject -Property $SiteInfo) 
  • 离开了-property参数标签将不起作用:

     $collection.Add((New-Object PSObject $SiteInfo)) 
  • 刚开始使用+=将不起作用:

     $collection += $SiteInfo 

对于这些,你将获得在CSV文件中的错误信息和/或怪异的条目。

为什么“出空”?

附加说明: $collection.Add()输出指数 ,当你运行它的最高有效指标。 该| Out-Null | Out-Null只是扔掉这个数字,如果你不想要它。



文章来源: Exporting Collection of Hashtable data to CSV