我试图导出CSV集合哈希表项的名称/值对.我还没有找到代码的select-object部分的正确语法.我希望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 :(
Run Code Online (Sandbox Code Playgroud)
所有那些"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 '|'
Run Code Online (Sandbox Code Playgroud)
请注意,虽然这在这里工作:
$collection.Add((New-Object PSObject -Property $SiteInfo))
Run Code Online (Sandbox Code Playgroud)
......这里有一些不起作用的东西:
省略一组括号将不起作用:
$collection.Add(New-Object PSObject -Property $SiteInfo)
Run Code Online (Sandbox Code Playgroud)省略-property参数标签将不起作用:
$collection.Add((New-Object PSObject $SiteInfo))
Run Code Online (Sandbox Code Playgroud)只是使用+=将不起作用:
$collection += $SiteInfo
Run Code Online (Sandbox Code Playgroud)对于这些,您将在CSV文件中收到错误消息和/或奇怪的条目.
附加说明:运行时$collection.Add()输出最高有效索引的索引.在| Out-Null刚刚扔掉这个数字,如果你不想要它.
| 归档时间: |
|
| 查看次数: |
9152 次 |
| 最近记录: |