Powershell получает уникальную запись первого столбца массива - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь получить уникальные записи от чтения Filepermissions.

Я получил следующий фрагмент кода. Это дает мне список с 2 массивами, один Identityreference и один FileSystemRights.

$ACLFile = Get-Acl -Path $dir -Filter Access | Select-Object -ExpandProperty Access | Where-Object {$_.IdentityReference -like "EBK\*"} | Select-Object IdentityReference, FileSystemRights
$ACLFile = $ACLFile.IdentityReference | select -unique

Теперь то, что я сделал здесь, дает мне только IdentityReference, но мне нужно и то, и другое. Если я удаляю $ACLFile.IdentityReference и просто пишу $ACLLFile, он удаляет дубликаты из столбцов FileSystemRights, но мне нужен только другой столбец в качестве индикатора.

1 Ответ

1 голос
/ 07 марта 2019

Вы можете просто использовать Sort-Object здесь:

$ACLFile | Sort-Object IdentityReference -unique

Однако, есть проблемы только с этим подходом. Вы потеряете ваше дополнительное FileSystemRights значение свойства для дубликата IdentityReference. Вы хотите объединить все FileSystemRights принадлежащие одному и тому же IdentityReference в одну строку?

Следующее удалит дубликат IdentityReferences и объединит FileSystemRights:

$ACLGroup = $ACLFile | Group-Object IdentityReference
$Singles = $ACLGroup.where({$_.count -eq 1}).group
$Duplicates = $ACLGroup.where({$_.count -gt 1})
$ItemizedDuplicates = $Duplicates | foreach {
    [pscustomobject][ordered]@{"IdentityReference"=$_.Group.IdentityReference[0]; "FileSystemRights" = $_.Group.FileSystemRights -join ", "}
}
@($ItemizedDuplicates,$Singles)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...