将哈希表数据集合导出到CSV [英] Exporting Collection of Hashtable data to CSV

查看:20
本文介绍了将哈希表数据集合导出到CSV的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将集合散列表项的名称/值对导出到CSV。我没有找到代码的选择对象部分的正确语法。我希望CSV文件有URL和所有者的列。感谢您的帮助

[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 :(

推荐答案

转换为PSObject,然后导出为csv

所有这些"Foreach"的东西都是不必要的。只需将您的散列转换为PSObject,然后导出!

此示例使用ArrayList存储HashTables,然后将该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文件中获得错误消息和/或奇怪条目。

为什么"out-Null"?

附加说明:$collection.Add() outputs the index运行时的最高有效索引。如果您不需要该数字,| Out-Null只会丢弃它。

这篇关于将哈希表数据集合导出到CSV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆