Если вы хотите сохранить это в одном запросе, вы можете выполнить фильтрацию по свойству UserAccountControl.Документация показывает, что заблокированная учетная запись помечена битом 0x0010 (шестнадцатеричное) или 16 (десятичное основание 10).Следовательно, вы должны иметь возможность использовать побитовый оператор AND (-band) для определения статуса блокировки.
get-aduser -filter {Enabled -eq 'true' -and (-not (UserAccountControl -band 16))} -Properties samaccountname, givenname, sn, physicalDeliveryOfficeName |
Select-Object -Property samaccountname, givenname, sn, physicalDeliveryOfficeName |
Export-Csv -Encoding Default -path $csvOutputPath -NoTypeInformation
Оператор -not
используется для учетных записей, которые не заблокированы.Вы можете удалить его, если хотите найти заблокированные учетные записи.
Технически вы можете использовать UserAccountControl
для всего фильтра, но он не так удобен для чтения.Вот пример работы оператора -band
:
# Enabled User not locked has useraccountcontrol = 512
[bool](512 -band 16)
False
# Enabled User locked has useraccountcontrol = 528
PS C:\temp\test1> [bool](528 -band 16)
True
# Locked Enabled User with expired password
[bool](8389136 -band 16)
True
См. UserAccountControl Flags для получения дополнительной информации о битах, используемых для определения значений UserAccountControl.
См. About_Arithmetic_Operators для получения дополнительной информации о побитовых операторах.