Top Advertising on Sys-Adm.in
3.33333333333331111111111Rating 3.33 (6 Votes)
Многие, кто работает с Active Directory наверняка замечали довольно своеобразный формат дат в AD, например:
 
 windows timestamps convert
 
Где 131674282253386100 = Thursday, April 05, 2018 9:57:05 PM, а теперь смотрим в качестве примера вывод PS по любому из выбранных пользователей:
Get-ADUser UserName -Properties cn, LockedOut, pwdLastSet, `
badPwdCount, badPasswordTime, lastLogon, lastLogonTimeStamp, `
whenCreated, whenChanged
Результат:
badPasswordTime    : 130271822015564526
CN                 : UserName
Enabled            : True
...
lastLogon          : 130271824649409984
lastLogonTimeStamp : 130271821324223446
LockedOut          : False
...
Особенно примечательны результаты по атрибутам:
  • badPasswordTime
  • lastLogon
  • lastLogonTimeStamp
Пробуем конвернтуть lastLogonTimeStamp в человеко-понятный вид используя функцию PS:
[datetime]::FromFileTime("130271821324223446")
Результат:
Friday, October 25, 2013 4:42:12 PM
С учетом статуса Enabled : True, это вообще никак не хорошо :) Пробуем на лету конвертнуть нужные нам аттрибуты:
Get-ADUser UserName -Properties Name,LastLogon,lastLogonTimeStamp | 
Select-Object Name,@{n='LastLogon';e={[DateTime]::FromFileTime($_.LastLogon)}},@{n='lastLogonTimeStamp';e={[DateTime]::FromFileTime($_.lastLogonTimeStamp)}} | Format-Table -Auto
Результат:
Name      LastLogon              lastLogonTimeStamp   
----      ---------              ------------------   
UserName  10/25/2013 4:47:44 PM  10/25/2013 4:42:12 PM

Как конвертировать дату в AD TimeStamp

Это бывает удобно при использовании LDAP Query например, здесь можно так-же использовать PS:
(Get-Date "1/1/2019").ToFileTime()
Результат:
131907636000000000
Проверяем:
[datetime]::FromFileTime("131907636000000000")
Результат:
Tuesday, January 01, 2019 12:00:00 AM

Как бонус - Отключение "старой" учетной записи при помощи PowerShell

Ну и для кучи залочим учетную запись, если ее последний логон был произведен более, чем 180 дней назад, здесь не понадобятся какие-либо конвертации:
Get-ADUser UserName -properties lastlogondate | Where-Object {$_.enabled -eq "true"-and $_.lastlogondate -lt (get-date).adddays(-180)} | Disable-ADAccount
То-же самое можно сделать массово:
  • используя аргумент -Filter *
  • если необходимо, можно указать месторасположение при помощи аргумента -SearchBase "OU=MyUsers,DC=Domain,DC=local"...
Ну уж просто отключать не интересно, так как эти учетные записи лучше поместить в определенную OU:
  • для этого можно использовать пайп | Move-ADObject –TargetPath "OU=Disabled Users, OU=MyUsers,DC=Domain,DC=local"
Ну и как говорится - Hey, scripting guys! Good luck) :))

Добавить комментарий


Защитный код
Обновить

Сейчас 275 гостей и ни одного зарегистрированного пользователя на сайте

Вверх
Вниз