Создание пользовательского объекта в powershell (Add-Member) - PullRequest
0 голосов
/ 03 октября 2018

Попытка построить пользовательский объект внутри цикла 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

Сообщение об ошибке: «Add-Member: невозможно добавить участника с именем ..., поскольку элемент с таким именем уже существует. Если вы все равно хотите перезаписать элементиспользуйте параметр Force для его перезаписи. "

Я не хочу перезаписывать, я хочу добавить его к объекту, чтобы конечный объект содержал все имена пользователей и все адреса.

Чтоя здесь не так делаю?Спасибо

1 Ответ

0 голосов
/ 03 октября 2018

Вам нужно создать массив псобъектов, а не один псобъект.Вы создаете один объект и повторно добавляете свойства 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...