Для пользователей:
powershell
Get-ADUser -Filter 'msDS-SupportedEncryptionTypes -ne 0 -and msDS-SupportedEncryptionTypes -ne 8 -and msDS-SupportedEncryptionTypes -ne 16 -and msDS-SupportedEncryptionTypes -ne 24' -Properties ServicePrincipalName, msDS-SupportedEncryptionTypes | Select-Object Name, SamAccountName, ServicePrincipalName, msDS-SupportedEncryptionTypes
Для компьютеров (обязательно проверьте и их!):
powershell
Get-ADComputer -Filter 'msDS-SupportedEncryptionTypes -ne 0 -and msDS-SupportedEncryptionTypes -ne 8 -and msDS-SupportedEncryptionTypes -ne 16 -and msDS-SupportedEncryptionTypes -ne 24' -Properties ServicePrincipalName, msDS-SupportedEncryptionTypes | Select-Object Name, SamAccountName, ServicePrincipalName, msDS-SupportedEncryptionTypes
Подход 2: Побитовая проверка наличия флагов AES (более мягкий вариант)
Ваш первоначальный фильтр ($_.msDS-SupportedEncryptionTypes -band 0x18) -eq 0 верен, но он исключает аккаунты с атрибутом 0. Если вы хотите включить и их (предполагая, что 0 может быть небезопасным), можно использовать такой вариант:
powershell
Get-ADUser -Filter * -Properties ServicePrincipalName, msDS-SupportedEncryptionTypes | Where-Object {
$_.ServicePrincipalName -ne $null -and
(($_.msDS-SupportedEncryptionTypes -band 0x18) -eq 0 -or $_.msDS-SupportedEncryptionTypes -eq 0)
} | Select-Object Name, SamAccountName, ServicePrincipalName, msDS-SupportedEncryptionTypes
(Аналогично можно заменить Get-ADUser на Get-ADComputer)
Подход 3: Использование LDAP-фильтра (фильтрация на стороне контроллера домена)
Этот метод может быть быстрее, так как вся работа выполняется на DC. Он ищет аккаунты с SPN, которые не отключены и у которых не установлены биты AES.
Для пользователей:
powershell
Get-ADUser -LDAPFilter "(&(servicePrincipalName=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(msDS-SupportedEncryptionTypes:1.2.840.113556.1.4.804:=24)))" -Properties ServicePrincipalName, msDS-SupportedEncryptionTypes | Select-Object Name, SamAccountName, ServicePrincipalName, msDS-SupportedEncryptionTypes
Для компьютеров:
powershell
Get-ADComputer -LDAPFilter "(&(servicePrincipalName=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(!(msDS-SupportedEncryptionTypes:1.2.840.113556.1.4.804:=24)))" -Properties ServicePrincipalName, msDS-SupportedEncryptionTypes | Select-Object Name, SamAccountName, ServicePrincipalName, msDS-SupportedEncryptionTypes