Сценарий Powershell для добавления пользователей в группу A / D из .csv, используя только адрес электронной почты? - PullRequest
0 голосов
/ 29 июня 2018
Import-CSV "C:\users\Balbahagw\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 tech-103 -Members $aduser
    } else {
      Write-Warning "Could not find user in AD with email address $($_.EmailAddress)"
    }
  }

Скрипт работает, но не может найти пользователя в AD с адресом электронной почты.

1 Ответ

0 голосов
/ 29 июня 2018

Сначала необходимо разрешить объект 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 не будет принимать переменную

...