2013-03-07 2 views
2

Я новичок в powershell и должен получать пользователей из AD на основе списка с именами. Есть ли способ отфильтровать из AD, используя что-то похожее на in-statement в SQL? (выберите * от пользователя, где имя в ('Joe', 'Bill)?Фильтрация нескольких пользователей с помощью get-aduser

Пока что я получаю пользователей в цикле foreach и добавляю их в arraylist, но я не знаю, является ли это хорошей практикой:

function GetUsers() 
{ 
$dummydata = @('Bill','Joe','Sam') 
$users = New-Object System.Collections.ArrayList($null) 

foreach($user in $dummydata) 
{ 
$aduser = get-aduser -f {GivenName -eq $user} -Properties * | select * 
    $users.add($aduser) | Out-Null 
} 

Return ,$users 

} 

ответ

3

Вы, вероятно, хотите, чтобы поместить это в функцию:

$dummydata = @('Bill','Joe','Sam') 

$filter = 
[scriptblock]::create(($dummydata| foreach {"(GivenName -eq '$_')"}) -join ' -or ') 
Get-ADUser -f $filter 
+0

Спасибо, работал как шарм, чистый и красивый подход –

+0

Я никогда не видел Еогеасп использовать внутри фильтра , обычно я использую его для запуска get-aduser для каждого пользователя. Не могли бы вы объяснить, как это работает? Не знаете, что такое -join и -или ac в конечном счете. – CrypticSage

Смежные вопросы