这使我困惑了几天。我习惯将2个变量结合在一起,例如
$a = "1"
$b = "2"
$c = $a + $b
结果:$c = "12"
我试图将2个变量连接在一起,或者将数据合并为2个变量,而这2个变量恰好是一个数据表,每个数据表都有多个行或条目,因此我只剩下一个表。就我而言,我有6个表,每个表有20多个条目,我想将它们合并到一个合并列表中。
我数据中的一列恰好是一个数组:
$d =
column1 : 123
column2 : 456
column3 : 789
column4 : 012
column5 : {345}
column1 : 234
column2 : 457
column3 : 890
column4 : 123
column5 : {}
$e =
column1 : 987
column2 : 654
column3 : 321
column4 : 098
column5 : {765,432}
column1 : 555
column2 : 444
column3 : 333
column4 : 222
column5 : {111,222,333}
column1 : 666
column2 : 777
column3 : 888
column4 : 999
column5 : {000}
我的每个变量的数据结构都相同,即列的编号和名称相同。
我尝试了很多不同的方法来做到这一点。我值得分享的尝试包括:
$f = $d + $e
失败,并显示错误:
方法调用失败,因为[System.Management.Automation.PSObject]不包含名为“ op_Addition”的方法。
我尝试过:
$f = $d | Select-Object -Property *
$f = $f + $e | Select-Object -Property *
这还会导致与上述相同的错误。
我尝试过将数据选择到哈希表(?)中的尝试
$f = $d | Select-Object -Property @('*')
但是,这仍然不能带我到任何地方。
我尝试使用-append选项将变量导出到CSV文件中,以为我可以将所有变量重新导入并很好地合并在一起,但这是一个灾难,因为数组的内容丢失了。
在DuckDuckGo / StckOverflow上提到“不包含名为'op_Addition'的方法”,但对于我将表组合在一起的特殊情况,则没有提及。
我很茫然,因为一开始似乎是将两个变量连接在一起的“简单”情况。
答案 0 :(得分:0)
此行为是由动态键入引起的。正如您没有告诉Powershell使用什么类型的变量,它引起了很大的猜测。由于1
和2
在双引号之间,因此假定它们是字符串而不是数字。字符串的+
被解释为串联。对于数字类型,它是加法。
在处理自定义对象时,加法通常是不明确的。对于某些类型,存在默认添加。字符串和数组就是这种情况。对于其他类型,没有明智的默认设置。这表示为常见的错误消息不包含名为“ op_Addition”的方法。。
组合表的正确方法取决于它们的数据类型。作为伪代码,这样的过程可以工作:
create new table n
for each table t in your result set
copy each row to nt from t
save nt
答案 1 :(得分:0)
谢谢安斯加尔
有效的答案实际上是:
$ f = @($ d); $ f + = $ e