Фильтр Get-ADUser по длине свойства - PullRequest
2 голосов
/ 03 февраля 2012

Я не могу понять это, чтобы спасти мою жизнь.

Я хочу получить всех пользователей AD, где их SAMAccountName длина равна 6.

Я надеюсь на что-то подобное

Get-ADuser -filter "samaccountname.length -eq 6" | out-file $outputFile -append

Я пишу масштабный сценарий, который сначала создает дамп всех пользователей AD, затем перебирает каждого дампированного пользователя и обновляет некоторые атрибуты. Этот скрипт будет часто запускаться, поэтому я хочу сделать его максимально эффективным. Я думал, что одна из областей, которую можно улучшить, - это процесс дампа.

У нас около 15 тысяч пользователей в AD, но меня интересуют только 4 тысячи, в частности, те, для которых их SamAccountName составляет 6 символов. По этой причине я не хочу заполнять свой файл вывода идентификаторов примерно 11 тысячами ненужных идентификаторов.

Я хочу, если возможно, избегать встроенных строк для каждого.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Попробуйте это:

Get-ADuser - filter * | ? { $_.samaccountname.length -eq 6} | out-file -$outputfile -append

Обычно я делаю это с Get-QADuser (из модуля Quest), но я думаю, Get-ADUser это то же самое.

Если $ _. Samaccountname не является строкой, возможно, вам придется использовать:

$_.samaccountname.tostring().length

EDIT:

Get-ADUser -Filter * -Properties samaccountname | ? {$_.samaccountname.length -eq 6}
1 голос
/ 04 февраля 2012
Get-ADuser | where { $_.samaccountname.length -eq 6 } | out-file $outputFile -append
...