Быстрый запрос для больших групп в AD
Я хотел бы найти более эффективный метод идентификации больших групп AD с помощью Powershell (скажем, более 5000 пользователей). Перечисление участников не требуется, так как я хочу исключить эти группы из другого процесса.
Очевидно, я могу использовать Get-ADGroup
как показано ниже, но если есть более эффективный способ (например, с помощью фильтров LDAP и т. д.), это было бы полезно.
(Get-ADGroup "Group" -Properties members).members.count | where {$_ -lt 5000}
Я запрашиваю членов сотен тысяч групп для конкретной цели, и я хотел бы исключить большие группы в начальных прогонах (так как основной процесс становится довольно интенсивным в большой группе).
1 ответ
У меня нет точного ответа. Но вы просите, чтобы округ Колумбия назвал вам каждое имя участника, несмотря ни на что. Это заняло бы целую вечность. Скобки вокруг get-adgroup требуют, чтобы каждый член был запрошен и сохранен в локальном ram. Тогда вы говорите, чтобы получить метод членов. Так что это противостоит этому. Тогда получите счет.
Может быть, если вы сделали это. Он будет работать параллельно, а не повторяться 2 раза. Таким образом, это может сэкономить 20-30% вашего времени.
Get-ADGroup "Group" -Properties members | select -ExpandProperty members | measure | where count -lt 5000
Вот пример сценария, чтобы сделать это автоматически... (я изменил фильтр ldap)
Get-ADGroup -filter * | select -expand name | foreach {
$group = $_
if (Get-ADGroup {name -eq $group} -Properties members | select -ExpandProperty members | measure | where count -lt 5000){
$countedGroups += $group
}
$countedGroups
}