我正试图通过读取文件权限来获得唯一条目。
我得到了以下代码片段。它为我提供了一个包含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列中的重复项,但我只希望将另一列用作指示符。
答案 0 :(得分:1)
您可以在此处使用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)