2011-11-14 37 views
0

我想統計每個用戶的登錄次數,並希望顯示整個登錄。我做了這樣的使用Powershell將DirectoryServices.ResultPropertyValueColleciton轉換爲Int

$search = new-object DirectoryServices.DirectorySearcher([ADSI]"") 
$search.filter = "(objectClass=user)" 
$result = $search.FindAll() 

#amount of User in AD 
Write-Host Amount of user: $result.Count 

#CountLogon 
$logonCounter = 0 
foreach($person in $result){ 
$logonCounter += $person.properties.logoncount 
} 

Write-host Number of Logons: $logonCounter 

當我運行該腳本,我得到一個

無法轉換的類型 「System.DirectoryServices.ResultPropertyValueCollection」的 「System.CirectoryServices.ResultPropertyValueCollection」值輸入 System.Int32"

回答

1

試試這個。順便說一句,您可能需要調整$ result.PageSize價值。在我testings它給了我只是科幻首先1000個對象,所以改變它繞過這個限制。要獲得登錄,管Measure-Object cmdlet的結果的總量並指定-sum開關:

$logonCount = $result | foreach { $_.properties.logoncount } | measure -sum 
$logonCount.sum 
+0

完美,謝謝 – andreaspfr

0

你可以試試這個雙重角色:在你的腳本

$logonCounter += [int][string]$person.properties.logoncount 
1

變化$logonCounter += $person.properties.logoncount$logonCounter += ($person.properties.logoncount)[0]