2016-07-26 1 views
-1

В PowerShell я использую следующие LDAP query для получения активных свойств каталога в имени хоста:LDAP UserAccountControl atttribute

$Filter = "(&(ObjectCategory=Computer)(ObjectClass=Computer)(CN=$ComputerName))" 
if ($Found = ([ADSISEARCHER]$Filter).FindOne()) { 
    $Details = $Found.GetDirectoryEntry() 
} 

После того, как у меня есть эти свойства, я хотел бы проверить, если учетная запись компьютера отключается. Следующий LDAP query позволяет мне сделать это:

$Filter = "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=2)(CN=$ComputerName))" 
([ADSISEARCHER]$Filter).FindOne() 

То, что я хотел бы знать, как я могу избежать использования второго LDAP query и использовать переменную $Details от первого LDAP query получить $True или $False, если компьютер Аккаунт отключен?

Я нашел несколько extra information, но я не могу скомпоновать их.

Благодарим за помощь.

+0

Требуется ли использовать запросы LDAP или вы также можете использовать модуль ActiveDirectory в powershell? – Deptor

+0

Нет, 'ActiveDirectory' недоступен. – DarkLite1

ответ

1

Информация, которую вы ищете, кодируется в userAccountControl объекта записи каталога. Однако свойство содержит массив с числовым значением, так что вы должны проверить, если «отключено» flag (числовое значение 2) в первом элементе массива устанавливается:

$disabled = [bool]($Details.userAccountControl[0] -band 2) 
+0

Я пробовал это, но он не работает. Когда я пытаюсь использовать это имя учетной записи компьютера, которое является 'Enabled', я получаю' FALSE', и когда я пытаюсь использовать его в 'Disabled', я получаю' FALSE'. – DarkLite1

+0

Невозможно воспроизвести. Если я использую вышеуказанное на отключенном компьютере, я получаю '$ true'. Если компьютер включен, я получаю '$ false'. Каков результат '$ Details | fl * 'для компьютера, где он не работает для вас? –

+0

Это была ошибка в процессе тестирования. Вы правы, это работает отлично! Спасибо за помощь. – DarkLite1

Смежные вопросы