Powershell 同样在PS6 foreach($i in((1,2)){Write Host$i}返回2个字符串代替1个数组

Powershell 同样在PS6 foreach($i in((1,2)){Write Host$i}返回2个字符串代替1个数组,powershell,Powershell,当有2个元素时 foreach ( $i in ((1,2),(3,4)) ) {Write-Host $i} 结果: 1 2 3 4 1 2 没关系 当有1个元素时 foreach ( $i in ((1,2)) ) {Write-Host $i} 结果: 1 2 3 4 1 2 这太荒谬了。它应导致: 1 2 我找不到解决办法。你?记不清确切的原因,但这是可行的 foreach ( $i in (,(1,2)) ) {Write-Host $i} Write-hostcmdl

当有2个元素时

foreach ( $i in ((1,2),(3,4)) ) {Write-Host $i}
结果:

1 2
3 4
1
2
没关系

当有1个元素时

foreach ( $i in ((1,2)) ) {Write-Host $i}
结果:

1 2
3 4
1
2
这太荒谬了。它应导致:

1 2

我找不到解决办法。你?

记不清确切的原因,但这是可行的

foreach ( $i in (,(1,2)) ) {Write-Host $i}

Write-host
cmdlet接收输入并将写入命令发送到主机控制台。这总是会导致每个条目都有一个新行

我们可以在输入对象上调用
-join
,并绕过foreach,如下所示

想象一个数组,从1到4<代码>1..4

我们可以添加
-join
并提供要在哪个字符上加入它们,我们只需要用空格将它们连接起来

(1..4) -join ' '

如果这没有帮助,请告诉我,我将确保为您找到正确的解决方案。

foreach
for:enumerate elements of collection。如果需要包含一个元素的数组,则需要使用一元逗号:
(,(1,2))
@PetSerAl-将此作为答案,而不是注释。这个问题的重点是什么?您已经有了一个数组。为什么需要返回完全相同的对象?没错:)。但在现实生活中,我不知道数组的长度。如果长度是1,我会得到一个错误的结果。(更好的说法是:另一个结果是尊重我的。)好吧,已经给出了正确的答案。对不起,你的建议确实是一个解决办法。我理解你的意思,我总是喜欢强调人们遇到问题的原因,并提供一个更适合真实企业脚本的替代方案。非常感谢。很奇怪,但根据医生的说法是对的。因此,在所有情况下,当您不知道数组的长度时,必须使用“一元逗号”。奇怪。不,你不需要知道数组的长度!foreach((,(1,2),(3,4)){Write Host$i}有效!你可以用逗号