繁体   English   中英

PowerShell - 检查用户是否通过安全组访问文件夹

[英]PowerShell - Check if user has folder access through a security group

我可以检查这段代码,但它显示了所有子文件夹的权限,我希望它只显示当前路径,如何以这种方式调整这段代码?

导入模块 ActiveDirectory

$User = "domain\user"
$UserOhneDomain = "user"
$Path = "folderpath"
$List = New-Object System.Collections.Generic.List[System.Object]
$Groups = Get-ADPrincipalGroupMembership $UserOhneDomain 

$GroupArrayList = New-Object System.Collections.ArrayList
foreach ($Group in $Groups)
{
$GroupArrayList.Add($Group.Name) | Out-Null
} 

# Fields we want in list, an array of calculated properties.
$OutputFields = @(
    @{name="Item" ;       expression={$_.Path.split(':',3)[-1]}}
    @{name="Rights" ;     expression={$Right.FileSystemRights}}
    @{name="AccessType" ; expression={$Right.AccessControlType}}
#    @{name="User" ;       expression={$User}}
) 
$FileSystemObjects = Get-ChildItem $Path -Recurse | ForEach-Object {Get-Acl $_.FullName}

foreach ($Item in $FileSystemObjects) {
    foreach ($Right in $Item.Access) {
        if ($Right.IdentityReference -eq $User)
        {
            $List.Add(($Item | Select-Object $OutputFields))
        }
    }   
}


foreach ($Item in $FileSystemObjects) {
    foreach ($Right in $Item.Access) {
        foreach ($GroupArrayItem in $GroupArrayList){
            if ($Right.IdentityReference -eq ("domain\" + $GroupArrayItem)) 
            {
                $List.Add(($Item | Select-Object $OutputFields))
            }
        }
    }   
}

$List | Out-File C:\Users\user\Desktop\PermissionCheck.txt

尝试删除以下行中的“ -Recurse ”参数:

$FileSystemObjects = Get-ChildItem $Path -Recurse | ForEach-Object {Get-Acl $_.FullName}

我现在没有要检查的广告,但我认为这就是问题所在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM