在Powershell中构建自定义对象(添加成员)

时间:2018-10-03 15:38:14

标签: powershell loops object

尝试在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的等效完整电子邮件地址。

我所拥有的部分工作,它显示了可以添加的第一个,但是没有“附加”其他:enter image description here

给出错误:“添加成员:无法添加具有名称的成员...,因为具有该名称的成员已经存在。如果仍然要覆盖该成员,请使用Force参数将其覆盖。” < / p>

我不想覆盖,我想将其附加到对象上,以便最终对象包含所有用户名和所有地址。

我在这里做错了什么?谢谢

1 个答案:

答案 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