2009-07-10 9 views
0

私はPowershellを使ってActive Directoryからいくつかの情報を取り出そうとしていますが、私は奇妙な動作をします。私のスクリプトは次のとおりです。Powershellは値と配列で異なる動作をしますか?

$toFind = ('bobjones', 'samsmith') 

filter Get-AdUser { 
    $strFilter = "(&(objectCategory=User)(sAMAccountName=$_))" 

    $objDomain = New-Object System.DirectoryServices.DirectoryEntry 
    $objSearcher = New-Object System.DirectoryServices.DirectorySearcher 
    $objSearcher.SearchRoot = $objDomain 
    $objSearcher.PageSize = 1000 
    $objSearcher.Filter = $strFilter 

    $colProplist = ("name", "department") 
    foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)} 

    ($objSearcher.FindAll() | %{$_.Properties}) 
} 

"paul" | get-aduser # Works 
$toFind | get-aduser # Doesn't work?! 

前者は、私が期待しているものを表示しています。理由はわかりませんが、後者は "0 1"を繰り返し印刷するだけです。単一のケースはなぜ機能しますが、アレイは動作しませんか?

答えて

1

PowerShellとは関係ありません。あなたは、DirectoryEntryのを作成する場合:

$objDomain = New-Object System.DirectoryServices.DirectoryEntry 
それはあなたのドメインの結果を返します

のみ(つまり、あなたが「NORTHAMERICA」と「ヨーロッパ」のようなADフォレストを持っている場合、それだけであなたがしているものを照会します) 。ただが起こった私が探していた名前はすべて別のドメインに属していた。

ドメインを手動で指定するためにコンストラクタを使用すると、それはかなりうまく動作します(ただし、まだすべてのドメインをクエリする方法はまだわかりません...)

関連する問題