在powershell中组合数组会在输出中提供System.Object []吗?

时间:2017-01-10 11:39:21

标签: string powershell join

我正在循环浏览一些文件,并希望将文件名添加到现有文件中。 我以为我的东西还可以,但是第二次循环,我丢失了文件的现有结尾,并获得了System.Object []而不是以前的内容。

这里的一个简单示例大致显示我正在做什么来预先添加信息,并复制结果(我不想要!)。

$a = "1","2","3"
$b = "test"
$c = -join $b,$a
# At this point, $c is as I expect; it has added $b to the start of the list.
$a = $c
$c = -join $b,$a
# This time, when I try to add $b to the front of $a, it correctly adds the new line, and the second line is also correct, but then it dumps the object properties of the remaining lines (or something?)

输出如下所示

 test
 test


Length         : 3
LongLength     : 3
Rank           : 1
SyncRoot       : {1, 2, 3}
IsReadOnly     : False
IsFixedSize    : True
IsSynchronized : False
Count          : 3

如果你使用set-content将它写入文件,那么它将对象属性写为System.Object [],这不是我想要的!

由于

更新: 根据这篇原帖的评论,我正在寻找的解决方案是使用$ a =(,$ b)+ $ a。 这具有将$ b中的字符串前置到存储在$ a。

中的字符串数组的开头的效果

1 个答案:

答案 0 :(得分:2)

我想,你需要澄清一下:

$a = "1","2","3"
$b = "test"
$c = -join $b,$a

不会创建包含

的数组$c
'test', '1', '2', '3'

$c看起来像这样:

'test', ('1', '2', '3')

我认为你想做的是:

$c = $b , $a

导致

'test', '1', '2', '3'