Ответ на ваш ближайший вопрос заключается в том, что вы что-то упустили после -gt
. Вы, вероятно, хотите -1
там? (но, как указывает Маттиас, даже это не сработает).
Но есть лучший способ сделать это. Похоже, вы пытаетесь найти только включенные учетные записи.
Короткий ответ: чтобы избежать необходимости добавлять все больше и больше номеров в ваш список, вы хотите сделать следующее:
Get-ADUser -Properties * -SearchBase "DC=domain,DC=com" -LDAPFilter "(!userAccountControl:1.2.840.113556.1.4.803:=2)"
Длинный ответ
Атрибут userAccountControl
является битовым флагом. Битовые флаги - это числа, где каждая цифра в двоичном числе является флагом, который что-то значит. Отключенный флаг - это вторая цифра (справа). Например, 514 это в двоичном виде:
10 0000 00 1 0
Этот жирный шрифт 1 означает «это отключено». Но любая из этих других цифр может быть 1, и она все равно будет отключена, даже если десятичное представление отличается.
Но 512 не отключено, потому что этот бит не установлен:
10 0000 00 0 0
Единственный гарантированный способ определить, установлен этот бит или нет, это использовать побитовую операцию.
Чтобы сделать это с Active Directory, вы должны использовать этот фильтр LDAP:
(!userAccountControl:1.2.840.113556.1.4.803:=2)
Этот странный номер является правилом соответствия, называемым LDAP_MATCHING_RULE_BIT_AND . Мы используем 2
, потому что это 10
в двоичном формате (второй бит). Поскольку наш запрос имеет !
перед, это означает: «если второй бит не установлен».