Рассчитанное свойство - самый простой способ исправить вашу проблему. Затем вам нужно либо развернуть это свойство, либо получить доступ к свойству непосредственно в цикле.
$var = Get-ADUser -Identity TestUser -Properties memberof |
Select-Object -ExpandProperty memberof |
Where {$_ -match "CN=DFS*"} |
Get-ADGroup -Properties name |
Select-Object @{Label='Name';Expression={"MW-"+ $_.name}}
foreach ($group in $var.Name) {
Add-ADGroupMember -Identity $group -Member TestUser
}
Проблема с вашей попыткой заключалась в том, что вы никогда не указывали имя свойства, а просто делали расчет. В цикле вам нужно было получить доступ только к вычисленным значениям, а не к объекту, который содержал свойство со значениями.
Если целью является чтение списка пользователей из файла, а затем обновление каждого пользователячленство, вы можете сделать следующее:
foreach ($user in (Get-Content c:\userlist.txt)) {
$var = Get-ADUser -Identity $user -Properties memberof |
Select-Object -ExpandProperty memberof |
Where {$_ -match "CN=DFS*"} |
Get-ADGroup -Properties name |
Select-Object @{Label='Name';Expression={"MW-"+ $_.name}}
Add-ADPrincipalGroupMembership -Identity $user -MemberOf $var.Name
}
Использование цикла foreach
позволяет назначать каждому пользователю переменную во время итерации по списку. Затем на эту переменную можно ссылаться в любой точке цикла.