2012-10-31 86 views
1

我有以下Powerhell腳本綁定到活動目錄OU並列出計算機。它似乎工作正常,但它輸出一個額外的0 - 我不知道爲什麼。誰能幫忙?腳本輸出額外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 
} 

輸出: Server1的 Server2上 Server3的

回答

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

我懷疑調用PropertiesToLoad.Add當你的foreach循環的輸出結果。

嘗試管道到out-null,像這樣:

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