#powershell #active-directory #directoryservices
#powershell #active-directory #directoryservices
Вопрос:
Я хотел бы подсчитать количество входов в систему каждого пользователя и хотел бы показать все входы в систему. Я сделал это следующим образом
$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
Когда я запускаю этот скрипт, я получаю
Не удается преобразовать «Систему.cirerectoryservices.ResultPropertyValueCollection «значение типа «System.DirectoryServices.ResultPropertyValueCollection»ввести System.Int32»
Ответ №1:
Попробуйте это. Кстати, возможно, придется скорректировать значение $result.Значение размера страницы. В моих тестированиях это дало мне только первые 1000 объектов, поэтому измените его, чтобы обойти это ограничение. Чтобы получить общее количество входов в систему, передайте результаты Measure-Object
командлета и укажите параметр -Sum :
$logonCount = $result | foreach { $_.properties.logoncount } | measure -sum
$logonCount.sum
Ответ №2:
Измените $logonCounter = $person.properties.logoncount
на $logonCounter = ($person.properties.logoncount)[0]
в вашем скрипте.
Ответ №3:
Вы можете попробовать это двойное приведение:
$logonCounter = [int][string]$person.properties.logoncount