Проверьте, являются ли пользователи в csv частью группы электронной почты - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть CSV-файл SamAccountNames, который мне нужно проверить, находятся в определенной группе. Пока у меня есть это:

Import-Module ActiveDirectory
$users = Import-Csv -path C:\path\to\csv
$group = "groupname"
$members = Get-ADGroupMember -Identity $group -Recursive |
             Select -ExpandProperty SamAccountName
ForEach ($user in $users) {
    If ($members -contains $user) {
        Write-Host $user
    } Else {
        Write-Host "Not in group"
    }
}

Вывод дает мне «Не в группе» только для каждой записи, хотя я знаю, что есть некоторые.

1 Ответ

0 голосов
/ 05 сентября 2018

Командлет Import-Csv выводит пользовательские объекты , чьи свойства соответствуют значениям столбца входного файла CSV .

Следовательно, ваша переменная $users по определению не содержит имена учетных записей SAM напрямую , она содержит пользовательские объекты один из которых свойства содержит значение интереса.

Например, если C:\path\to\csv содержит что-то вроде:

SamAccountName,More,Stuff
user1,foo,bar
user2,baz,bam
...

Ваше условное выражение должно быть:

if ($member -contains $user.SamAccountName) { # ...

Если в вашем CSV-файле отсутствует строка заголовка или это просто текстовый файл с (подразумеваемым) одним столбцом значений, вы можете указать его с помощью -Header; например, если C:\path\to\csv содержит только:

user1
user2
...

вы можете использовать $users = Import-Csv -LiteralPath C:\path\to\csv -Header SamAccountName и использовать те же условия, что и выше, или, проще говоря, если есть только один столбец, использовать
$users = Get-Content C:\path\to\csv чтобы прочитать строки в массив и использовать исходное условное выражение.

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