【发布时间】:2017-09-15 23:08:09
【问题描述】:
我有一个通用文本,不是 PSCustom,不是 CSV,不是 JSON,但有一些结构
字段1:ABC 字段 2:DEF 字段1:HKA 字段3:YZ 字段 1:123 字段 2:234 场 4:876 领域5:徐志显然,文本是多条记录,有字段和缺失字段,每条记录用CR-LF分隔。
是否有一种有效的方法来解析字符串并仅从记录中提取 Field1 和 Field2 并将结果放入 JSON 中?
我尝试将字符串放入一个名为 $s 的字符串变量中
$s | select -ExpandProperty Field1,Field2
但我得到了这个错误
Select-Object:无法将“System.Object[]”转换为参数“ExpandProperty”所需的类型“System.String”。不支持指定的方法。
如果我尝试过
$s | select -ExpandProperty Field1
然后我收到错误消息说 Field1 不是属性。
我想我有点理解这个错误,但不知道如何修复它。我想我必须先以某种方式将文本转换为结构化表格,然后再提取它。但是我该怎么做呢?
【问题讨论】:
-
您正在尝试扩展字符串上的“属性”。这行不通。您必须创建一个 PSCustom 对象并将值放入该对象中,然后您可以在管道中使用它并以这种方式扩展属性。我能想到的解决方案是将新行上的字符串拆分为一个数组,并在其上使用 foreach 循环来创建您的自定义对象。
-
我还注意到您有多个字段 1 和 2 等等....您提供的这个示例正确吗?
-
@ArcSet:是的。 “纯文本”实际上不是纯文本,而是结构化文本。它们是带有 field1、field2、...、fieldn 的记录。有些字段显示是因为它们有值,有些则没有,因为它们是空白的。但我只对特定领域感兴趣,比如 field1 和 field2。如果它们是空白的,那么我会在值中留出空格。
标签: powershell