Используйте Search-ADAccount, чтобы найти все учетные записи с не установленной датой истечения срока действия учетной записи. - PullRequest
1 голос
/ 06 марта 2019

Есть ли способ в Powershell перечислить все учетные записи AD в домене, для которых не установлена ​​дата окончания срока действия учетной записи? то есть срок действия аккаунта установлен на «Никогда».

Я могу использовать Get-ADuser, чтобы получить срок действия одной учетной записи.

get-aduser username | Select-Object -Property name,Enabled,AccountExpirationDate,DistinguishedName | Where-Object {$_.AccountExpirationDate -eq '`n'}

Однако есть ли способ использовать "Search-ADAccount -AccountExpiring .....", чтобы получить список всех учетных записей в домене, для которых не установлена ​​дата окончания срока действия учетной записи, или лучший способ сделать это?

Когда я использую приведенную ниже команду, я не получаю никакой информации о возврате, однако я настраиваю тестовую учетную запись без даты окончания действия (т.е. никогда), установленной для проверки команды, однако учетная запись не отображается в результатах.

Search-ADAccount -AccountExpiring | Select-Object -Property name,AccountExpirationDate | Where-Object {$_.AccountExpirationDate -eq '`n'}

Ответы [ 2 ]

1 голос
/ 06 марта 2019

Решение с Get-ADUser

Вы все равно можете использовать Get-ADUser для поиска учетных записей, если используете правильный фильтр:

Get-ADUser -Filter {-not(AccountExpirationDate -like "*") } -Properties AccountExpirationDate | Select-Object -Property name,Enabled,AccountExpirationDate,DistinguishedName

Это даст вам каждую учетную запись, где нетдля атрибута установлено значение AccountExpirationDate.


Решение с Search-ADAccount

Если вы все еще хотите использовать Search-ADAccount, вам нужно предложить временную метку до истечения срока действия Аккаунтов. (взгляните на ссылку) .Нет возможности искать аккаунты, для которых не задано значение.Вы всегда должны предлагать какой-либо тип DateTime.

Например, если вы хотите найти все учетные записи, срок действия которых истекает через 2 недели, у вас есть варианты:

Первый:

Решение с датой истечения срока действия учетной записи:

Search-ADAccount -AccountExpiring -DateTime ((Get-Date).AddDays(14))

Секунда:

Решение в оставшиеся дни до истечения срока действия учетной записи:

Search-ADAccount -AccountExpiring -Timespan "14"
0 голосов
/ 07 марта 2019

Я нашел решение, сочетающее ответ Paxz выше и эту ветку Technet . «AccountExpirationDate» слишком сложно эффективно отфильтровать из AD, не экспортируя дату окончания срока действия учетной записи каждого пользователя и не форматируя ее в удобочитаемую строку даты и времени.

В статье Technet, приведенной выше, объясняется, что " accountExpires AD атрибут - это большое целое число (64-разрядное), представляющее даты (в формате UTC) как число интервалов в 100 наносекунд с 12:00 утра 1 января 1601 года. Параметр AccountExpirationDate - это метод свойства, который преобразует значение accountExpires в соответствующую дату в местном часовом поясе". Из дополнительных исследований, когда для учетной записи установлено значение «Никогда не истекает», у нее будет целое число «accountexpires», равное 9223372036854775807.

«Get-ADUser» можно использовать для фильтрации всех учетных записей, для которых целое число «accountexpires» равно «9223372036854775807». Это позволяет избежать необходимости конвертировать дату для каждой учетной записи в Домене.

Get-ADUser -filter {Enabled -eq 'True' -and accountexpires -eq '9223372036854775807'} | Select-Object name,enabled,accountexpires,distinguishedName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...