Как использовать переменную для замены пути Object / OU на LDAPFilter в Powershell - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь получить членство для определенного офиса одной определенной группы безопасности в нашей рабочей среде вместо Get-ADGroupMember, который медленный и всегда получает time-out, когда существует огромный список пользователей.

Мой код, как показано ниже:

Import-module ActiveDirectory
**$groupinfo** = Get-ADGroup -identity "vip"

Get-ADuser -LDAPFilter '(&(objectcategory=user)(memberof='**$groupinfo.DistinguishedName**'))' -Properties office,title | where {$_.office -like 'New York'} | select name,samaccountname,office,title |Export-csv -NoTypeInformation c:\tmp\NY.csv -Delimiter ";"

Я получаю следующую ошибку

Get-ADUser : A positional parameter cannot be found that accepts argument '**CN=vip,OU=Groups,DC=contoso,DC=com**'.
At line:2 char:2
+  Get-ADuser -LDAPFilter '(&(objectcategory=user)(memberof='$group.Dis ...
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADUser], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.GetADUser

Может кто-нибудь посоветовать мне, как использовать эту переменную $groupinfo в LDAPFilter?Мне нужен переход?

Get-ADuser -LDAPFilter '(&(objectcategory=user)(memberof=**CN=vip,OU=Groups,DC=contoso,DC=com**))' -Properties office,title | where {$_.office -like 'New York'} | select name,samaccountname,office,title |Export-csv -NoTypeInformation c:\tmp\NY.csv -Delimiter ";"

Этот работает, когда нет переменных.

1 Ответ

0 голосов
/ 16 апреля 2019

Если вы используете двойные кавычки вокруг LDAPFilter, вместо переменной имени литерала используется содержимое переменной.

Попробуйте:

Get-ADuser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(memberOf=$($groupinfo.DistinguishedName)))" -Properties office,title | 
    Where-Object {$_.office -like '*New York*'} | 
    Select-Object name,samaccountname,office,title |
    Export-Csv -NoTypeInformation c:\tmp\NY.csv -Delimiter ";"

Примечание: я не пытался объединить все это в одну строчку, потому что выполнение этого просто требует ошибок, которые трудно обнаружить. Кроме того, я изменил (objectcategory=user) на (objectCategory=person)(objectClass=user), чтобы обеспечить возвращение только пользовательских объектов. См. Фильтр для objectCategory и objectClasO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...