2016-05-24 3 views
2

В этой команде PowerShell, чтобы найти владелец файлов в папке,Get-Unique возвращает неверные результаты

Get-ChildItem $dir -Recurse | foreach {Get-Acl $_.fullname | select owner} | Get-Unique -AsString 

Get-Unique возвращается каждый результат, который отличается от одного до него, вместо проверки всего списка. Например:

domain\user1 
    domain\user2 
    domain\user1 
    domain\user3 
    domain\user1 

Он должен возвращать только один из них.

ответ

3

От Get-Help Get-Unique

Get-Unique командлетов сравнивает каждый элемент отсортированного списка к следующему пункту, устраняет дубликаты и возвращает только один экземпляр каждого элемента. Список должен быть отсортирован для правильной работы командлета.

Чтобы получить результат, который вы хотите, трубы список через Sort-Object перед использованием Get-Unique

$list | sort | Get-Unique 

Такое поведение является таким же, как uniq команды в Unix.

+0

спасибо. Однако я обнаружил, что вам нужно сортировать по свойству: '$ list | sort -property owner | get-unique' – hale

+1

На самом деле вам не нужно это делать, если вы измените блок 'Get-Acl', чтобы использовать' select -ExpandProperty owner'. Это дает вам только владельца, а не объект с собственностью. –

Смежные вопросы