【发布时间】:2016-08-03 05:40:34
【问题描述】:
我有一个进程解析出大量 CSV 文档并保存更改以供以后在数据库中处理。如果在人员数据库中未找到任何 CSV 中的一行(人),则该过程会从 CSV 中保存该记录。我目前将它保存为哈希表的字符串输出。所以CSV文件
First,Last,Office
Joe,Smith,Detroit
在 VS 2015 中使用调试器时,import-csv "path to my doc.csv" 的输出将字符串可视化为:
@{First=Joe; Last=Smith; Office=Detroit;}
它还扩展为以下键/值集:
First | Joe
Last | Smith
Office | Detroit
在 powershell 中,我可以将表中的名称对象用作 $obj.First 并继续进行操作。但我无法将该字符串保存到数据库中,并将其作为可用的 powershell 对象恢复。我总是以字符串文字结束。
有没有办法将此字符串转换回哈希表或其他键/值对?
我试过了:
$data = ConvertFrom-String $raw -PropertyNames First,Last,Office
我已经在原始字符串上尝试过,它只是返回字符串,其中包含属性名称。我还将原始哈希转换为数组:
[string[]]$l_array = $raw | out-string
然后当我使用ConvertFrom-String 命令将其转换回来时,它实际上是在移动数据元素并添加键作为值。
感谢您的帮助。我可以根据需要提供更多详细信息或示例代码。
编辑 另一方面,我如何以更好的格式存储当前是 PSCustomObject 的数据,以便我可以重建到相同的 PSCustomObject 中?我想也许 Export-Csv 可能有用,但你不能导出到字符串。至少据我所知。
【问题讨论】:
-
Import-Csv生成 PSCustomObjects 数组而不是哈希表。你能解释一下“看时”是什么意思吗?您如何查看结果? -
我可能错了,但
PSCustomObjects创建与哈希表的使用不一样吗?我会更新帖子以澄清。 -
@DaveSexton 我还更新了标题以反映您对 PSCustomObject 的注释,而不是哈希表。
标签: powershell hashtable string-conversion