Я использую класс DirectorySearcher
, чтобы найти одного пользователя. Критерии должны заключаться в том, что objectCategory
является пользователем, и что его пароль не установлен на никогда не истекает .
После некоторых поисков я пришел к следующему:
$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.Filter = "(&(objectCategory=User)(samAccountName=$env:username)(!(userAccountControl:1.2.840.113556.1.4.803:=65536)))"
где userAccountControl:1.2.840.113556.1.4.803:=65536
должно быть для пользователей, чей пароль никогда не истекает.
Наконец я делаю:
$user = $searcher.FindOne().GetDirectoryEntry()
Но там говорится, что я не могу вызвать метод для выражения с нулевым значением. Я думаю, что я правильно использую скобки. Так может ли быть, что я не могу использовать! оператор для этого?
Также обратите внимание, что я мог бы использовать команду get-aduser
, например, так:
get-aduser -filter * -properties samAccountName, PasswordNeverExpires | where { $_.passwordNeverExpires -eq "true" } | where {$_.enabled -eq "true"} | where {$_.samAccountName -eq $env:username}
но в этом случае было бы предпочтительнее использовать DirectorySearcher
вместо этого, как показано выше.