Функция Get-ADGroupMember
может возвращать группы, компьютеры и пользователей. Я думаю, что вы должны отфильтровать все, что не является пользователем.
Также, используя Select emailaddress
, вы получите массив пользовательских объектов , как уже указывал Кирилл Пашков. Вы действительно хотите иметь массив строк .
Попробуйте это для $members =
части:
$members = Get-ADGroupMember -Identity VIP -Filter {objectClass -eq "user"} |
Get-ADUser -Properties Emailaddress |
Select-Object -ExpandProperty Emailaddress |
Sort-Object -Unique
Здесь Sort-Object -Unique
не обязательно, но только для того, чтобы убедиться, что там нет дубликатов ..
Я не могу проверить, действительно ли ваш код правильно получает $ColValues
из Excel. То есть: если это приводит к массиву из строк , содержащему адреса электронной почты, но если это так, также унифицируйте этот массив:
$ColValues = $ColValues | Sort-Object -Unique
Заключительное замечание:
Похоже, вы не закрыли Excel после того, как собрали значения из него.
Лучше всего иметь привычку закрывать и выпускать ComObjects, когда закончите с таким кодом:
$objExcel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($WorkBook) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()