Как можно исключить нескольких пользователей из вывода командлета Get-ADuser в powershell? - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь экспортировать список всех пользователей в определенном офисе для внешней системы регистрации гостей. За исключением некоторых пользователей (около 20 или около того) не должны быть добавлены в общий каталог, и мне нужно, чтобы они были исключены из вывода.

Вот что у меня есть ...

    Get-ADUser -Filter {City -eq "Dallas"} -Properties GivenName, Surname, EmailAddress, Name |
        Select GivenName, Surname, EmailAddress, Name | 
        Sort-Object -Property GivenName | 
        Export-Csv $env:USERPROFILE\Desktop\ADusers.csv -NoTypeInformation -Force

Я надеюсь избежать длинной строки фильтра, например ...

-filer {(name -ne "name 1")(name -ne "name 2")...} etc 

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

    $excluded = "Name 1","Name 2","Name 3","Name 4"

Результаты соответствуют ожидаемым (за исключением пользователей, которых необходимо исключить) ...

Любая помощь очень ценится!

1 Ответ

1 голос
/ 28 июня 2019

Предполагая, что нет никакого пользовательского атрибута или другого способа идентифицировать этих пользователей / разделить их в ActiveDirectory, уже единственное, что вы можете сделать, это создать строку фильтра из массива имен

$excluded = "Name 1","Name 2","Name 3","Name 4"
$namefilter = ($excluded | ForEach-Object{"name -ne '$_'"}) -join " -and " 
$cityfilter = "City -eq 'Dallas'"
Get-ADUser -Filter ($cityfilter, $namefilter -join " -and ") -Properties GivenName, Surname, EmailAddress, Name

Таким образом, фильтр будет таким:

City -eq 'Dallas' -and name -ne 'Name 1' -and name -ne 'Name 2' -and name -ne 'Name 3' -and name -ne 'Name 4'

Это может показаться запутанным, но $cityfilter, $namefilter -join " -and " позволяет пропустить один из этих фильтров без изменения кода. Поэтому, если $excluded окажется пустым, код все равно будет успешным. Вы можете легко это сделать, но я подумал о том, чтобы смягчить это.

...