Powershell对数值与数组的作用不同?

时间:2009-07-10 17:59:42

标签: powershell

我正在尝试使用Powershell从Active Directory中获取一些信息,但我得到了一些奇怪的行为。这是我的剧本:

$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 个答案:

答案 0 :(得分:1)

想出来,它与PowerShell无关。创建DirectoryEntry时:

$objDomain = New-Object System.DirectoryServices.DirectoryEntry

它将仅为您的域返回结果(例如,如果您有像“NorthAmerica”和“Europe”这样的AD林,它将只查询您所在的域)。只是发生了,我搜索的所有名称都在另一个域中。

如果您使用构造函数手动指定域,它的效果非常好(尽管如此......仍然没有想出如何查询所有域...)