Главная

Saturday, 16 March 2019

Разница между Get-ADUser и Search-ADAccount.

Всем привет.

Выбирая из AD учетки которые не работали более 90 дней обнаружил интересную статистику по итогам. Как известно такой запрос можно сделать с помощью Get-ADUser или Search-ADAccount.

Пишем:
$d = (Get-Date).AddDays(-90)
$t = New-Timespan –Days 90

Get-ADUser -filter {(enabled -eq "false") -and (lastlogondate -lt $d)} -properties cn,lastlogondate | Select CN,LastLogonDate | measure

ИЛИ

Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $t | sort Name | Select Name,LastLogonDate,DistinguishedName | measure

ИЛИ

Search-ADAccount –UsersOnly –AccountInactive –DateTime $d | sort Name | Select Name,LastLogonDate,DistinguishedName | measure

Так вот в первом запросе итог часто больший чем во втором и третьем. Почему так? А дело  в том что Search-ADAccount всегда выбирает и те учетки по которым входа никогда не было, т.е. у которых поле lastlogondate содержит "пусто".

Поэтому для Get-ADUser надо добавить условие lastlogondate -notlike '*':

Get-ADUser -filter {(enabled -eq "false") -and ((lastlogondate -lt $d) -or (lastlogondate -notlike '*'))} -properties cn,lastlogondate | Select CN,LastLogonDate | measure

На сегодня все.

2 comments:

  1. Search-ADAccount не сочетает –TimeSpan и -Searchbase ???

    ReplyDelete
  2. Search-ADAccount не умеет выбирать все свойства, по этому передаем найденное в Get-ADUser, который это умеет.

    ReplyDelete

А что вы думаете по этому поводу?