You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取含嵌套组用户的文件夹ACL权限并指定列输出格式

调整后的PowerShell脚本
$UncPath = 'R:\Distrib-OIS\7\Test'

# 获取目标路径的非继承权限条目,排除系统默认组
$allPermissions = Get-Acl $UncPath |
    Select-Object -ExpandProperty Access |
    Where-Object { 
        -not $_.IsInherited -and 
        ('NT AUTHORITY\SYSTEM','BUILTIN\Administrators','CREATOR OWNER' -notcontains $_.IdentityReference) 
    } |
    Select-Object @{ 
        Name = 'Identity'; 
        Expression = { $_.IdentityReference -replace "^[^\\]+\\(.+)", '$1' } 
    }, FileSystemRights

# 处理直接分配给用户的权限
$directUserPermissions = $allPermissions |
    ForEach-Object {
        $user = Get-ADUser -Identity $_.Identity -ErrorAction SilentlyContinue
        if ($user) {
            [PSCustomObject]@{
                sAMAccountName = $user.sAMAccountName
                Identity       = "直接分配"  # 若需显示用户自身名称,可改为 $user.sAMAccountName
                FileSystemRights = $_.FileSystemRights
            }
        }
    }

# 处理分配给组的权限,递归展开所有嵌套成员
$groupBasedPermissions = @()
foreach ($perm in $allPermissions) {
    $group = Get-ADGroup -Identity $perm.Identity -ErrorAction SilentlyContinue
    if ($group) {
        # 递归获取组的所有嵌套成员(仅保留用户对象)
        $groupMembers = Get-ADGroupMember -Identity $group -Recursive |
            Where-Object { $_.objectClass -eq 'user' }
        foreach ($member in $groupMembers) {
            $groupBasedPermissions += [PSCustomObject]@{
                sAMAccountName = $member.sAMAccountName
                Identity       = $group.Name
                FileSystemRights = $perm.FileSystemRights
            }
        }
    }
}

# 合并结果并按用户名、所属组排序输出
$allUserPermissions = $directUserPermissions + $groupBasedPermissions
$allUserPermissions | Sort-Object sAMAccountName, Identity
关键修改说明
  • 递归获取嵌套组成员:使用Get-ADGroupMember -Recursive参数直接展开组的所有嵌套层级成员,同时通过Where-Object { $_.objectClass -eq 'user' }过滤仅保留用户对象,避免包含嵌套组本身。
  • 明确直接权限的标识:对于直接分配给用户的权限,将Identity设为“直接分配”,清晰区分直接权限与通过组继承的权限;若需显示用户自身名称,可修改对应字段值。
  • 优化逻辑减少冗余:重构原脚本分离的用户/组处理逻辑,用更简洁的循环完成权限关联,避免重复操作。
  • 提升结果可读性:最终输出按用户名和所属组排序,方便查看同一用户的所有权限来源。

内容的提问来源于stack exchange,提问作者Vladimir Konstantinov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 20:43:12