@mdkolpakov

Как ограничить вывод?

Здравствуйте!
$lol = Get-Acl \\addr\addr | Format-list AccessToString 
$lol 


Выводит список групп пользователей.
Как я могу сделать так, чтобы некоторые конкретные группы не выводились ? 
У меня была мысль конвертировать $lol из 
object в str или array и потом уже с помощью replace убрать лишнее. Но не получается в итоге вывести результат в удобном формате. 
Подскажите пожалуйста
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
@BeatHazard
Приветствую.
Можете вывести нужные вам данные таким образом, ограничив вывод нужных групп в -notlike укажите, какую группу нужно скрыть.
$lol = get-acl \\10.24.66.14\share 
$lol = $lol.Access | Where-Object {$_.IdentityReference -notlike "S-1-22-2-1958201108"}
$lol

Можно дополнительно сделать переменную с массивом списком групп которые не нужны и воспользоваться -notcontains если групп много.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mvv-rus
Настоящий админ AD и ненастоящий программист
Powershell работает с объектами и фильтровать надо объекты. По факту вы хотите получить элементы свойства Access и отфильтровать их - вот и пишите этот фильтр явно, а потом преобразовывайте выдачу в нужный вам формат . Для одного субъекта это делается примерно так(выдачаформатируется так же, как и у вас):
(Get-Acl \\addr\addr).Access | Where {$_.IdentityReference -ne 'Домен\Группа'} | ForEach ([String]$_.IdentityReference, String]$_.AccessControlType, [String]$_.FileSystemRights) -join ' '}

Чтобы отфильтровать несколько групп либо добавьте в команду Where дополнительные аналогичные условия, объединив их по && , либо добавьте команды Where для каждой такой группы
Теоретически, можно отфильтрофать и результат команды Format-List, которой вы пользуетесь, но это сложнее: она возвращает не строки, а весьма нетривиальные объекты, которые потом формируют выдачу
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы