Хотя при проверке схемы вы получаете множество атрибутов, существуют также атрибуты (systemFlags), которые не определены в схеме, но рассчитываются по запросу.
Следующая функция должна получить все это:
function Get-AllADUserAttributes {
# First, get all AD user attributes defined in the Active Directory schema
$searchBase = (Get-ADRootDSE).SchemaNamingContext
$schemaAttribs = Get-ADObject -SearchBase $searchBase -Filter {name -like "User"} -Properties MayContain,SystemMayContain |
Select-Object @{Name = 'Attributes'; Expression = {$_.maycontain + $_.systemmaycontain}} |
Select-Object -ExpandProperty Attributes
# Next, get all created user attributes. These are not defined in the schema, but calculated when asked for
$flagsAttribs = Get-ADObject -SearchBase $searchBase -ldapfilter '(systemFlags:1.2.840.113556.1.4.803:=4)' -Properties systemFlags |
Select-Object -ExpandProperty Name
return ($schemaAttribs + $flagsAttribs) | Sort-Object
}