Powershell 如何循环PSCutoObject数组并添加额外属性?

Powershell 如何循环PSCutoObject数组并添加额外属性?,powershell,Powershell,假设我有以下pscutomobject数组脚本 $pscoArray = @() foreach($server in $Servers) { $pscoArray += [PSCustomObject]@{ Server = $server } } $iteration = 0 如何循环生成的$pscoArray,并向其中添加一个名为“迭代”的新成员,并根据数组中已存在的对象数进行增量 i、 e 假设本例中有3台服务器

假设我有以下pscutomobject数组脚本

$pscoArray = @()

foreach($server in $Servers) {
    $pscoArray += [PSCustomObject]@{
        Server = $server
    }
}                   

$iteration = 0
如何循环生成的$pscoArray,并向其中添加一个名为“迭代”的新成员,并根据数组中已存在的对象数进行增量

i、 e

假设本例中有3台服务器,最终输出应该是这样的

iteration Server
------    ------
1         server1
2         server2
3         server3
所以迭代必须作为一个成员添加到位置0,在pscustomobject的开头,尽管我也不知道该怎么做


p、 我知道我可以直接在forloop中添加迭代,但我需要它用于不同的目的

如果这是生成数组的代码

$Servers = 'svr1', 'svr2', 'svr3'
$pscoArray = foreach($server in $Servers) {
    [PSCustomObject]@{
        Server = $server
    }
}
那么最简单的方法就是使用for(..)循环

输出:


更新

如果要首先列出迭代属性,可以执行以下操作:

# add a new property called "iteration" as first property to each member of the array
for ($i = 0; $i -lt $pscoArray.Count; $i++) {
    $pscoArray[$i] = $pscoArray[$i] | Select-Object @{Name = 'iteration'; Expression = {$i + 1}}, *
}

$pscoArray
输出:


如果这是生成数组的代码

$Servers = 'svr1', 'svr2', 'svr3'
$pscoArray = foreach($server in $Servers) {
    [PSCustomObject]@{
        Server = $server
    }
}
那么最简单的方法就是使用for(..)循环

输出:


更新

如果要首先列出迭代属性,可以执行以下操作:

# add a new property called "iteration" as first property to each member of the array
for ($i = 0; $i -lt $pscoArray.Count; $i++) {
    $pscoArray[$i] = $pscoArray[$i] | Select-Object @{Name = 'iteration'; Expression = {$i + 1}}, *
}

$pscoArray
输出:


你到底想达到什么目的?代码看起来可以使用简单的字符串数组,因为PsCustomObjects只有一个属性?如果您想在迭代数组时向对象添加新属性,请查看@Theo ya,以便我尝试添加一个名为迭代的新成员。但是它也应该计算pscoarray中已经存在多少对象,并增加添加的新迭代成员。这必须在foreach循环之外进行,因为正如我所说的,我还有其他一些目的,所以我可以在foreach循环中添加mmber,你到底想实现什么?代码看起来可以使用简单的字符串数组,因为PsCustomObjects只有一个属性?如果您想在迭代数组时向对象添加新属性,请查看@Theo ya,以便我尝试添加一个名为迭代的新成员。但是它也应该计算pscoarray中已经存在多少对象,并增加添加的新迭代成员。这必须在foreach循环之外进行,因为正如我所说的,我还有一些其他的目的,所以我可以在foreachloopproblem中添加mmber:迭代可以重新安排在pscoArray的开始吗?因此,这段代码非常完美,我只需要将迭代作为第一列:)@Cataster我添加了一个新的代码建议,这样数组中的每个对象都将被一个新对象覆盖,该对象首先具有迭代属性,再加上对象中已经存在的所有内容(即选择对象末尾的asteriks
*
)@卡塔斯特很高兴能帮上忙@在这种情况下,Cataster会做
$pscoArray | Where Object{$\u.Server-ne'svr2'}
@Cataster不,我不知道为什么有些人会这样做。这个问题对我来说是完全合法的,我看不出有任何理由投反对票。我以+1的成绩将比分扳平。干杯问题:迭代是否可以重新安排在pscoArray的开始?因此,这段代码非常完美,我只需要将迭代作为第一列:)@Cataster我添加了一个新的代码建议,这样数组中的每个对象都将被一个新对象覆盖,该对象首先具有迭代属性,再加上对象中已经存在的所有内容(即选择对象末尾的asteriks
*
)@卡塔斯特很高兴能帮上忙@在这种情况下,Cataster会做
$pscoArray | Where Object{$\u.Server-ne'svr2'}
@Cataster不,我不知道为什么有些人会这样做。这个问题对我来说是完全合法的,我看不出有任何理由投反对票。我以+1的成绩将比分扳平。干杯
# add a new property called "iteration" as first property to each member of the array
for ($i = 0; $i -lt $pscoArray.Count; $i++) {
    $pscoArray[$i] = $pscoArray[$i] | Select-Object @{Name = 'iteration'; Expression = {$i + 1}}, *
}

$pscoArray
iteration Server
--------- ------
        1 svr1  
        2 svr2  
        3 svr3