Как получить количество включенных и не просроченных учетных записей членов группы AD - PullRequest
0 голосов
/ 10 января 2019

Мне нужно получить количество учетных записей, которые включены и не истек срок действия группы AD. Я могу получить включенные учетные записи, но у меня проблемы с теми, срок действия которых истек.

Я читал о том, как это сделать, и нашел много решений, которые в основном одинаковы:

Get-ADGroupMember -Identity $DisName |get-aduser|Where{$_.Enabled -eq $true -and $_.AccountExpires -ne 0}

Это не работает. Я проверил значение свойства AccountExpires учетной записи с истекшим сроком действия и не равен 0. Я также сравнил это значение среди различных дат истечения срока действия, таких как: истек, истекает сегодня, истекает завтра и никогда не истекает, чтобы попытаться найти что-то релевантное среди значений, но я ничего не нашел.

Это мой код:

$DisName = 'CN=demo1group,OU=groups,OU=demo1,OU=res10000,OU=Customer,DC=cloud,DC=local'
$lic = (Get-ADGroupMember -Identity $DisName |get-aduser|Where{$_.Enabled -eq $true -and $_.AccountExpires -ne 0}).count 

Я пытался принудительно закрыть аккаунт, но всегда получаю одно и то же значение для $ lic

Ответы [ 2 ]

0 голосов
/ 10 января 2019

AccountExpires всегда является значением FileTime 9223372036854775807, ЕСЛИ вы не изменяете пользователя, чтобы истечь, и в этот момент значение AccountExpires изменяется на 0 для никогда не истекает (это изменилось на 0 для всех пользователей AD в моей лаборатории)

Я вручную установил дату истечения 9 января 2019 года в своей лаборатории и получил:

AccountExpirationDate                : 10/01/2019 00:00:00
accountExpires                       : 131915520000000000

так что вам лучше установить переменную $ currentdate = Get-Date, а затем вместо этого выполнить оператор сравнения с параметром AccountExpirationDate?

Вот пример кода, который подтверждает его в моей лаборатории:

$currrentdate = (Get-Date).ToFileTime()
Get-ADGroupMember -Identity <groupname> | get-aduser -Properties * | where {$_.Enabled -eq $true -and $_.AccountExpirationDate -ne $null -and $_.AccountExpires -lt $currrentdate} | Select-Object -Property UserPrincipalName,AccountExpirationDate,AccountExpires
0 голосов
/ 10 января 2019

Возможно, вам понадобится сделать это:

Get-ADGroupMember -Identity $DisName | Get-ADUser -Properties Enabled,AccountExpires | Where { $_.Enabled -eq $true -and $_.AccountExpires -ne 0 }

Get-ADUser возвращает только ограниченный набор свойств по умолчанию, но вы можете использовать -Properties, чтобы вернуть определенный список дополнительных свойств, или использовать -Properties *, чтобы вернуть все свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...