假设我有以下pscutomobject数组脚本
$pscoArray = @()
foreach($server in $Servers) {
$pscoArray += [PSCustomObject]@{
Server = $server
}
}
$iteration = 0
如何遍历生成的$ pscoArray并添加一个名为“ iteration”的新成员,并根据数组中已存在的对象数对其进行递增?
即
$pscoArray = $pscoArray | %{ Add-Member -MemberType NoteProperty -Name 'iteration' -Value $iteration; 'iteration' = $iteration++}
假设此示例中有3台服务器,最终输出应如下所示
iteration Server
------ ------
1 server1
2 server2
3 server3
因此必须将迭代作为成员添加到pscustomobject的开始位置0处,尽管我也不知道该怎么做
p.s。我知道我可以直接在forloop中添加迭代,但是出于其他目的,我需要这样做。
答案 0 :(得分:2)
如果这是生成数组的代码
Error importing: Error: "Loading chunk 0 failed.
那么最简单的方法可能是使用for(..)循环
$Servers = 'svr1', 'svr2', 'svr3'
$pscoArray = foreach($server in $Servers) {
[PSCustomObject]@{
Server = $server
}
}
输出:
# add a new property called "iteration" to each member of the array for ($i = 0; $i -lt $pscoArray.Count; $i++) { $pscoArray[$i] | Add-Member -MemberType NoteProperty -Name 'iteration' -Value ($i + 1) } $pscoArray
如果要首先列出迭代属性,可以执行以下操作:
Server iteration
------ ---------
svr1 1
svr2 2
svr3 3
输出:
# 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