Когда вы используете lastLogon, вы получаете формат, который использует AD ... тогда, когда работает if, вы получаете
Could not compare "131820853335016078" to "09/24/2018 18:18:57". Error: "Cannot convert value "9/24/2018 6:18:57 PM" to type "System.Int64". Error: "Invalid cast from 'DateTime' to 'Int64'.""
, так что он не доходит до остального ..
попробуйте использовать свойство LastLogonDate, это поможет вам больше.
попробуйте использовать это:
$user = Get-ADUser -Filter {sAMAccountName -eq $username} -Properties LastLogonDate
$lastlogontime = $user.lastlogonDate
Редактировать:
у вас есть еще некоторые проблемы с вашим кодом:
Вам необходимо удалить displaylastlogon
, вы не можете использовать -gt, потому что он всегда будет ложным. Пользователь не может войти в будущем.вам нужно использовать -lt
вот полный сценарий, работающий:
$user = Get-ADUser -Filter {sAMAccountName -eq $username} -Properties LastLogonDate
$lastlogontime = $user.lastlogonDate
If ($user -ne $Null) {
if($lastlogontime -lt $time)
{
Write-Host $username " last logon time" $lastlogontime
}
else
{
Write-Host $username " has not logged in before"
}
}
else
{
Write-Host $username " does not exist"
}
еще один Edit:
Я просто заметил, что егоне отвечает на случай, когда пользователь никогда не будет входить в систему, потому что вы получите $ null, а $ null ниже текущего времени.поэтому вам нужно убедиться, что lastlogontime не равно нулю
измените if на это:
if($lastlogontime -ne $null -and $lastlogontime -lt $time)