这对我来说是个新手,所以请原谅我,我的任务是创建一个自定义对象,让我们称之为$custOBJ。
$custOBJ.name应为字符串,$custOBJ.numbers应为数字数组:
$custOBJ = New-Object PSObject
$custOBJ | Add-Member -type NoteProperty -name "Name" -Value "muzi"
$numbers = @(1,11,22)
$custOBJ | Add-Member -type NoteProperty -name "Numbers" -Value $numbers 到目前为止一切顺利,现在我需要创建100个这样的对象(当然每个对象都有不同的值),然后我需要在数组上创建,以将所有对象放在一起,所以最后我应该有$custOBJ1,$custOBJ2 ...以此类推,一个数组$array = @($custOBJ1, custOBJ2 ...)
我试着用一个for循环来做这件事,如下所示:
for ($i = 0; $i -lt 10; $i++) {
$custOBJ[$i] = New-Object PSObject
$custOBJ[$i] | Add-Member -type NoteProperty -name "test$i" -Value "testik$i"
$numbers = @('1$i')
$custOBJ[$i] | Add-Member -type NoteProperty -name "Numbers" -Value $numbers
}我收到一个错误,很明显这不是正确的方法,有人能帮助我吗?
发布于 2020-07-30 23:14:55
您正在尝试做什么:$custOBJ[$i] =尝试在对象(数组) $custOBJ的元素号$i中存储一些内容。但是,我们还没有一个名为$custOBJ的可计数对象,并且使用[Number],您只能到达该对象已经存在的位置(该数组需要10个元素才能更改10个元素)。
相反,您可以通过收集for(each)返回的所有内容来创建数组:
$array = for ($i=0; $i -lt 10; $i++){ # collect the output of the for in $array
$custOBJ = New-Object PSObject
$custOBJ | Add-Member -type NoteProperty -name "test$i" -Value "testik$i"
$numbers = @('1$i')
$custOBJ | Add-Member -type NoteProperty -name "Numbers" -Value $numbers
$custOBJ # return this instance of $custOBJ
}或者简而言之,js2010写的东西。
发布于 2020-07-30 23:05:40
一种更常见的形式是:
$custOBJ = foreach ($i in 0..9){
[pscustomobject]@{
Test = "testik$i"
Numbers = 0..$i
}
}
$custOBJ
Test Numbers
---- -------
testik0 {0}
testik1 {0, 1}
testik2 {0, 1, 2}
testik3 {0, 1, 2, 3}
testik4 {0, 1, 2, 3…}
testik5 {0, 1, 2, 3…}
testik6 {0, 1, 2, 3…}
testik7 {0, 1, 2, 3…}
testik8 {0, 1, 2, 3…}
testik9 {0, 1, 2, 3…}https://stackoverflow.com/questions/63175745
复制相似问题