2011-11-14 12 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では、それは私にちょうどFiを提供していました最初の1000個のオブジェクトなので、この制限を回避するように変更してください。ログインの総量、パイプMeasure-Objectコマンドレットの結果を取得し、-Sumスイッチを指定するには、次のスクリプトで$logonCounter += ($person.properties.logoncount)[0]

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

ありがとう – andreaspfr

0

あなたは、この二重のキャストを試すことができます。

1

変更$logonCounter += $person.properties.logoncount

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