在一行powershell中循环遍历一系列数字

在一行powershell中循环遍历一系列数字,powershell,Powershell,我正试图找到一种方法,在PowerShell中循环遍历一系列数字。我在下面试过,效果不错 foreach ($i in 1..3) { "$i" } foreach ($i in 1,2,3) { "$i" } 然而,当我在下面尝试时,我收到一条错误消息 foreach ($i in 1..3,4..8) { "$i" } 无法转换类型为“System.Object[]”的“System.Object[]”值

我正试图找到一种方法,在PowerShell中循环遍历一系列数字。我在下面试过,效果不错

foreach ($i in 1..3)
{
    "$i"
}

foreach ($i in 1,2,3)
{
    "$i"
}
然而,当我在下面尝试时,我收到一条错误消息

foreach ($i in 1..3,4..8)
{
  "$i"
}
无法转换类型为“System.Object[]”的“System.Object[]”值 输入“System.Int32”。第1行字符:1

  • $collection1=1..3,4..8

是否有方法在PowerShell中循环一系列数字。

错误的原因是

foreach ($i in 1..3,4..8)
将两个元素的数组传递给foreach枚举器。第一个元素是包含值1、2、3的数组,第二个元素也是包含值4-8的数组。但是,foreach希望从集合中查找值,而不是从其他集合(本例中为数组)中查找值

要为foreach获取一个数组,请创建两个数组并将它们相加。这样,

$a1 = 1..3
$a2 = 4..8
$k = $a1+$a2

foreach($i in $k) {$i}           
1
2
3
4
5
6
7
8
或者,将范围括在括号中,以便将结果转换为单个数组:

foreach($i in (1..3),(4..8)) {$i}
1
2
3
4
5
6
7
8
使用
+
添加两个范围数组。您的代码尝试构建一个数组数组。[咧嘴笑]
foreach($i in (1..3),(4..8)) {$i}
1
2
3
4
5
6
7
8