Сначала необходимо разрешить объект ADUser
, соответствующий этому адресу электронной почты, параметр -Identity
не будет автоматически разрешен на основе поля EmailAddress
в ADUser
. Предполагая, что свойство EmailAddress
правильно установлено для объекта пользователя в AD, и предполагая, что имя столбца для адреса электронной почты в CSV равно ExternalEmailAddress
, это должно работать:
Import-CSV "C:\users\user\desktop\test1.csv" | Foreach-Object {
$aduser = Get-ADUser -Filter "EmailAddress -eq '$($_.EmailAddress)'"
if( $aduser ) {
Write-Output "Adding user $($aduser.SamAccountName) to groupname"
Add-ADGroupMember -Identity groupname -Members $aduser
} else {
Write-Warning "Could not find user in AD with email address $($_.EmailAddress)"
}
}
Обратите внимание, что если у ADUser не установлен адрес электронной почты, вы не сможете сопоставить этого пользователя AD с электронной почтой.
Вот документы для Add-ADGroupMember
, вы можете прочитать их для получения дополнительной информации: https://docs.microsoft.com/en-us/powershell/module/activedirectory/add-adgroupmember?view=winserver2012-ps&viewFallbackFrom=winserver2012r2-ps
РЕДАКТИРОВАТЬ : обнаружил некоторую странность в использовании скобок и $ PSitem, поэтому я изменил его на использование строкового фильтра.
РЕДАКТИРОВАТЬ 2 : обнаружил причину, по которой использование переменной в скобках -Filter
не работает (именно так, как я изначально это написал), и фактически не рекомендуется, когда сценарии: Get-Aduser -Filter не будет принимать переменную