脚本输出额外的0

Bra*_*rad 1 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
 }
Run Code Online (Sandbox Code Playgroud)

输出: 0 Server1 Server2 Server3

Sha*_*evy 5

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

foreach ($i in $colPropList){[void]$objSearcher.PropertiesToLoad.Add($i)}
Run Code Online (Sandbox Code Playgroud)

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

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

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