将两个数组中的值添加到 PSCustomObject
Adding values from two arrays into a PSCustomObject
我正在尝试使用 PSCustomObject 将两个数组的值组合成 table。
一组是密码,一组是用户。
当我尝试将它们组合成 PSCustomObject 数组时,它只列出数组中的最后一个值,而不是列表。
我试过几个不同的版本:
for ($i = 0; $i -lt $users.Length; $i++) {$myObject = [PSCustomObject] @{name = $users.name[$i]; User = $users.samaccountname[$i]; Mail = $users.mail[$i]; Password = $passwords[$i]}}
和
foreach ($psw in $passwords) {$users | % {$myObject = [PSCustomObject] @{name = $PSItem.name; User = $PSItem.samaccountname; Mail = $PSItem.mail; Password = $psw}}}
当我尝试在 $myobject
上使用 +=
时出现错误:
Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.
知道我做错了什么吗?
而不是使用 +=
,只需将循环的所有输出分配给一个变量(另请注意,您可能希望索引到 $users
而不是合成集合你从 $users.name
等得到 - 否则如果任何 属性 包含多个值,它将中断):
$myObjects =
for ($i = 0; $i -lt $users.Length; $i++) {
[PSCustomObject] @{
Name = $users[$i].name
User = $users[$i].samaccountname
Mail = $users[$i].mail
Password = $passwords[$i]
}
}
在$myobject
上使用+=
时出现的错误是因为$myobject
是自定义类型(没有实现'op_Addition'方法)。
您可以使用实现了此方法的对象,例如 ArrayList,如下所示:
$myObject = New-Object -TypeName "System.Collections.ArrayList"
for ($i = 0; $i -lt $users.Length; $i++) {
$myObject += [PSCustomObject] @{
Name = $users[$i].name
User = $users[$i].samaccountname
Mail = $users[$i].mail
Password = $passwords[$i]
}
}
我正在尝试使用 PSCustomObject 将两个数组的值组合成 table。
一组是密码,一组是用户。
当我尝试将它们组合成 PSCustomObject 数组时,它只列出数组中的最后一个值,而不是列表。
我试过几个不同的版本:
for ($i = 0; $i -lt $users.Length; $i++) {$myObject = [PSCustomObject] @{name = $users.name[$i]; User = $users.samaccountname[$i]; Mail = $users.mail[$i]; Password = $passwords[$i]}}
和
foreach ($psw in $passwords) {$users | % {$myObject = [PSCustomObject] @{name = $PSItem.name; User = $PSItem.samaccountname; Mail = $PSItem.mail; Password = $psw}}}
当我尝试在 $myobject
上使用 +=
时出现错误:
Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.
知道我做错了什么吗?
而不是使用 +=
,只需将循环的所有输出分配给一个变量(另请注意,您可能希望索引到 $users
而不是合成集合你从 $users.name
等得到 - 否则如果任何 属性 包含多个值,它将中断):
$myObjects =
for ($i = 0; $i -lt $users.Length; $i++) {
[PSCustomObject] @{
Name = $users[$i].name
User = $users[$i].samaccountname
Mail = $users[$i].mail
Password = $passwords[$i]
}
}
在$myobject
上使用+=
时出现的错误是因为$myobject
是自定义类型(没有实现'op_Addition'方法)。
您可以使用实现了此方法的对象,例如 ArrayList,如下所示:
$myObject = New-Object -TypeName "System.Collections.ArrayList"
for ($i = 0; $i -lt $users.Length; $i++) {
$myObject += [PSCustomObject] @{
Name = $users[$i].name
User = $users[$i].samaccountname
Mail = $users[$i].mail
Password = $passwords[$i]
}
}