PowerShell Compare-Object лучший результат - PullRequest
0 голосов
/ 05 октября 2018

Я хочу сравнить 2 файла, содержащие адреса электронной почты, которые имеют следующую форму:

$Current = Get-Content -Path myfileref

Результат выглядит следующим образом:

email
user1@mydomain.com
user2@mydomain.com
...
$target = Get-Content -Path RefFile

Результаткак это:

PrimarySmtpAddress
user1@mydomain.com
user3@mydomain.com
...

Обратите внимание, что заголовок отличается для 2 файлов

Я делаю:

$AddNewMember = Compare-Object -ReferenceObject ($Target.GetEnumerator() -ne "PrimarySmtpAddress") -DifferenceObject ($Current.GetEnumerator() -ne "Mail") |
                Where-Object {$_.SideIndicator -contains "==>"}

Результат выглядит так:

InputObject SideIndicator
"user2@mydomain.com" ==>
...

Обратите внимание на «до и после адреса электронной почты»

Тогда я хотел бы использовать команду Add-DistributionGroupMember:

foreach ($Member in $AddNewMember) {
    Add-DistributionGroupMember -Identity $ListName -Member $Member.inputObject -DomainController "SpecificDC.myDomain.com" -Confirm:$false -ErrorAction SilentlyContinu
}

, но ничего не происходит! Подробный режим подсказывает мне

... поиск объекта "user1@mydomain.com" типа "ADrecipient" в корне "$ null" ... окончание обработки

Я почти уверен, что pb происходит от входного объекта, но я хожу по кругу и не могу понять, почему и решить эту проблему.

Входной объект пытается пройти ""user1@mydomain.com" ", а не" user1@mydomain.com ".

1 Ответ

0 голосов
/ 08 октября 2018

Спасибо, Ансгар, вы поставили меня на правильный путь

Первое: теперь я использую import-csv вместо get-content

Второе: я стандартизировал заголовки во время import-csv (тот же заголовок, даже если он не тот же) Import-Csv -path $ File -Header Mail

затем:

Сравнить-объект -ReferenceObject $ Reflist -DifferenceObject $ sql -Property mail |Where-Object {$ _. SideIndicator -eq "=>"} и то же самое в другом направлении, конечно.Я получаю полезные результаты

После этого легко сделать цикл foreach ($ member в $ UsersToAdd)

Add-DistributionGroupMember -Identity $ List -Member $ Member.mail -DomainController xxxx-Подтверждение: $ false -ErrorAction SilentlyContinue с последующим Remove-DistributionGroupMember

еще раз спасибо Оливье

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