尝试在For-EachObject循环中构建自定义对象。
这是代码
$infouser = New-Object -TypeName psobject
(Get-ChildItem -Path "\\$poste\C$\Users").Name | ForEach-Object {
$nomcomplet += Get-ADUser -Identity $_ | select-object -ExpandProperty userprincipalname
Add-Member -InputObject $infouser -Name "Code" -Value $_ -MemberType NoteProperty
Add-Member -InputObject $infouser -Name "Nom complet" -Value $nomcomplet -MemberType NoteProperty
}
$infouser | Out-GridView
我想要实现的是一个自定义对象,其中包含C:\ USERS中的用户名以及来自AD的等效完整电子邮件地址。
我所拥有的部分工作,它显示了可以添加的第一个,但是没有“附加”其他:
给出错误:“添加成员:无法添加具有名称的成员...,因为具有该名称的成员已经存在。如果仍然要覆盖该成员,请使用Force参数将其覆盖。” < / p>
我不想覆盖,我想将其附加到对象上,以便最终对象包含所有用户名和所有地址。
我在这里做错了什么?谢谢
答案 0 :(得分:1)
您需要创建一个psobject数组,而不是单个psobject。您正在创建一个对象,然后将属性重新添加X次。
这将隐式创建一个数组,并为每个循环添加一个新的psobject。
$infouser = (Get-ChildItem -Path "\\$poste\C$\Users").Name | ForEach-Object {
[pscustomobject]@{
'Code' = $_
'Nom Complet' = $(Get-ADUser -Identity $_ | select-object -ExpandProperty userprincipalname )
}
}
$infouser | Out-GridView