代码之家  ›  专栏  ›  技术社区  ›  Ana Betts

PowerShell对值和数组的作用不同?

  •  0
  • Ana Betts  · 技术社区  · 15 年前

    我试图使用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 回复  |  直到 15 年前
        1
  •  1
  •   Ana Betts    15 年前

    知道了,它与PowerShell无关。创建目录entry时:

    $objDomain = New-Object System.DirectoryServices.DirectoryEntry
    

    它将只返回您的域的结果(即,如果您有一个像“北美”和“欧洲”这样的广告森林,它将只查询您所在的森林)。它只是 发生了 我搜索的所有名称都在另一个域中。

    如果您使用构造函数手动指定域,那么它工作得很好(尽管…,但仍然没有找到如何查询所有域的方法)。