Имя учетной записи Get-ADUser, чей электронный адрес совпадает с любым из электронных писем, указанных в CSV-файле - PullRequest
0 голосов
/ 18 мая 2019

У меня есть CSV-файл, разделенный запятыми, как показано ниже (первая строка - заголовок):

category;email.1;email.2;email.3;email.4;email.5;email.6
category1;sample@gmail.com;;;;;
category2;;;sample2@gmail.com;;;
category3;;sample3@gmail.com;;sample44@hotmail.com;;sample55@gmail.com

и так далее ...

Теперь я импортирую его:

$emails = Import-CSV -Encoding Default -Delimiter ";" "c:\temp\myFile.csv"

И, наконец, для каждой строки в csv я хочу получить имя учетной записи пользователя AD, чей адрес электронной почты совпадает с любым от email.1 до email.6

Так что я пробую это с помощью foreachЦикл, но я понятия не имею, что нужно сделать, чтобы получить то, что я хочу.

$emails | foreach {
    $userAccountName = Get-ADUser -filter {something}
    # do some stuff with $userAccountName
}

Примечание: я бы хотел общее решение, учитывая, что в будущем может быть более 6 писем по категориям.Также учтите, что некоторые электронные письма могут быть пустыми для данной категории.

1 Ответ

1 голос
/ 18 мая 2019

После импорта вы можете перечислить заголовки, соответствующие шаблону

$emails = Import-CSV -Encoding Default -Delimiter ";" "c:\temp\myFile.csv"
$EmailHeaders = ($Emails[0].psobject.Properties|Where-Object Name -like 'email.*').Name

Банкомат это возвращает:

> $EmailHeaders
email.1
email.2
email.3
email.4
email.5
email.6

Nest foreachs для итерации электронных писем в каждой строке, которые заполнены.
Get-ADUser закомментирован для тестирования

foreach($Row in $Emails){
  foreach($EmailHeader in $EmailHeaders){
    if($Email=$Row.$EmailHeader){
      [PSCustomObject]@{
        Category      = $Row.Category
        Email_x       = $EmailHeader
        Email         = $Email
        SamAccountName= $Null #(Get-ADUser -Filter {EmailAddress -eq "$Email"} -Properties SamAccountName).SamAccountName
      }
    }
  }
}
Category  Email_x Email                SamAccountName
--------  ------- -----                --------------
category1 email.1 sample@gmail.com
category2 email.3 sample2@gmail.com
category3 email.2 sample3@gmail.com
category3 email.4 sample44@hotmail.com
category3 email.6 sample55@gmail.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...