Как отфильтровать AD с помощью объединенной переменной в Powershell - PullRequest
0 голосов
/ 27 сентября 2011

Я использую PowerShell v2 и AD-модуль Microsoft для поиска в нашей AD учетных записей, у которых EmployeeID соответствует определенному идентификатору. Идентификатор обычно хранится в AD как «00000123456», но значение, с которым я должен искать, является только частью «123456». Проблема в том, что я не могу понять, как сделать подобный поиск в AD. вот мой текущий код

$EmpInfo = Import-csv "PSfile.csv"
$EmplID = EmpInfo.ID 
$EmpAD = get-aduser -Filter {employeeId -like "*$EmplID"} -Properties * -EA Stop

На этом этапе EmpAD всегда пуст

Я могу обойти это, изменив EmpID так, чтобы он содержал «* 123456», прежде чем я вызову Get-ADUser, и это работает. Но я не могу не думать, что есть проблема синтаксиса, препятствующая очевидному подходу. Исследования, направленные на его устранение, оказались бесплодными.

Ответы [ 2 ]

1 голос
/ 28 сентября 2011

Если ваша строка действительно в атрибуте employeeID, вы можете проверить:

$EmpAD = get-aduser -LDAPFilter "(employeeId=*$EmplID)" -SearchBase 'DC=dom,DC=fr' -Properties *

Вы можете использовать LDP.EXE (или ADSI.EXE), чтобы проверить, что именно существует в вашем каталоге.

----- Edited -----

Для меня это работает, если я тестирую с LDIF:

C:\temp>ldifde -f eid.ldf -d "dc=dom,dc=fr" -r "(employeeId=*)"
Connexion à « WM2008R2ENT.dom.fr » en cours
Connexion en tant qu'utilisateur actuel en utilisant SSPI
Exportation de l'annuaire dans le fichier eid.ldf
Recherche des entrées...
Création des entrées...
3 entrées exportées

Есть 3 объекта

В PowerShell с командлетами AD это дает следующее:

PS C:\>  get-aduser -LDAPFilter "(employeeID=*)" | Measure-Object

    Count    : 3

И

    $var = "123456"
    PS C:\>  get-aduser -LDAPFilter "(employeeID=*$var)" -properties employeeID

    DistinguishedName : CN=user1 Users,OU=MonOu,DC=dom,DC=fr
    EmployeeID        : 00000123456
    Enabled           : True
    GivenName         : user1
    Name              : user1 Users
    ObjectClass       : user
    ObjectGUID        : b5e5ea59-93a6-4b24-9c3e-043a825c412e
    SamAccountName    : user1
    SID               : S-1-5-21-3115856885-816991240-3296679909-1107
    Surname           : Users
    UserPrincipalName : user1@dom.fr

Будьте осторожны : Я не понимаю, почему, но прошло некоторое время между изменением в каталоге с MMC и результатом в приглашении PowerShell. Я перезагружаю новый интерпретатор PowerShell и повторно импортирую модуль AD.

0 голосов
/ 28 сентября 2011

С точки зрения производительности, если вы знаете, что идентификаторы всегда представляют собой определенное количество цифр (с ведущими нулями), вам будет лучше, если вы просто отформатируете идентификатор заранее.

Если ваш идентификатор должен состоять из 11 цифр, сделайте что-то вроде этого $ EmplID.ToString ("D11"), чтобы его дополнили.

...