脚本输出额外的0

时间:2012-10-31 18:11:52

标签: powershell

我有以下powershell脚本,它绑定到活动目录OU并列出计算机。它似乎工作得很好,除了它输出额外的0 - 我不知道为什么。有人可以帮忙吗?

 $strCategory = "computer"

 $objDomain = New-Object System.DirectoryServices.DirectoryEntry("LDAP://          OU=Computers,OU=datacenter,DC=ourdomain,DC=local")

 $objSearcher = New-Object System.DirectoryServices.DirectorySearcher($objDomain)
 $objSearcher.Filter = ("(objectCategory=$strCategory)")

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

 $colResults = $objSearcher.FindAll()

 foreach ($objResult in $colResults)
 {
 $objComputer = $objResult.Properties; 
 $objComputer.name
 }

输出: 的 0 服务器1 Server2上 服务器3

2 个答案:

答案 0 :(得分:5)

您需要捕获(或忽略)PropertiesToLoad.Add方法的输出,否则您将获得$ colPropList中每个属性的值。

foreach ($i in $colPropList){[void]$objSearcher.PropertiesToLoad.Add($i)}

您可以简化和缩短脚本并在一次调用中加载一堆属性,而无需使用foreach循环。 AddRange方法的另一个好处是它不输出所请求属性的长度,因此不需要捕获任何内容。

$strCategory = "computer"
$colProplist = "name","distinguishedname"

$searcher = [adsisearcher]"(objectCategory=$strCategory)"
$searcher.PropertiesToLoad.AddRange($colProplist)
$searcher.FindAll() | Foreach-Object {$_.Properties}

答案 1 :(得分:1)

我怀疑你的foreach循环在调用PropertiesToLoad.Add时输出结果。

尝试滚接到out-null,如下所示:

foreach ($i in $colPropList){
    $objSearcher.PropertiesToLoad.Add($i) | out-null
}