Основываясь на следующей статье, я попытался повторить вычисление, которое делается, чтобы решить, будет ли обновляться lastLogonTimestamp или нет.
https://blogs.technet.microsoft.com/askds/2009/04/15/the-lastlogontimestamp-attribute-what-it-was-designed-for-and-how-it-works/
# Get the users lastLogonTimestamp
$User = Get-ADUser -Identity TestUser -Properties lastLogonTimestamp
# Whatever value 'ms-DS-Logon-Time-Sync-Interval' is set (14 default)
$TimeSyncInterval = 14
# $TimeSyncInterval - (Random percentage of 5)
$X = $TimeSyncInterval - (5/100*(Get-Random -Minimum 0 -Maximum 100))
# CurrentDate - lastLogonTimestamp
$YFileTime = (Get-Date).ToFileTime() - $User.lastLogonTimestamp
$YDays = ([datetime]::FromFileTime($YFileTime)).Day
# Update or not?
if($X -lt $YDays) {
Write-host "update lastLogonTimestamp" -ForegroundColor Cyan
}
elseif($X -gt $YDays) {
Write-host "do not update lastLogonTimestamp" -ForegroundColor Yellow
}
Если я не буду преобразовыватьразница во времени в «днях», вычисление будет примерно таким, как 11 - 69352598407
, и, следовательно, не будет иметь никакого смысла.
Если я сейчас запущу вышеуказанный скрипт-блок через цикл, он никогда не скажет мне, что произойдет обновление,Нет никаких шансов, что свойство будет обновлено, если значение меньше 9 дней (если вы используете 14 в качестве TimeSyncInterval)
Вы можете манипулировать CurrentDate для имитации будущего, добавляя, например, 9 дней.
$YFileTime = ((Get-Date).AddDays(9)).ToFileTime() - $User.lastLogonTimestamp
Если я теперь снова запускаю скрипт через цикл, он говорит мне, что иногда происходит обновление.
1..100 | Foreach-Object {
# script from above
}
Мне кажется, что я сделал то, что сделал, но, возможно, есть какой-то дополнительный вклад от некоторыхЗдесь ходят легенды об AD.
Пожалуйста, оставьте свой отзыв!