2013-03-07 82 views
2

我是新來的powershell,必須根據名稱列表從AD中獲取用戶。有沒有什麼方法可以使用類似於SQL中的in-statement來過濾AD的方法? (select * from('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

謝謝你,工作就像一個魅力,乾淨,漂亮的方法 – 2013-03-07 11:49:20

+0

我從來沒有見過的foreach過濾器內部使用,通常我會用它來爲每個用戶運行一個get-aduser。你能解釋一下它是如何工作的嗎?不知道-join和-or是什麼真的在做。 – CrypticSage 2018-01-18 22:15:05