PowerShell 技能连载 - 移除选定的 NTFS 权限

您也许需要从 NTFS 权限中移除某些权限。我们假设您希望移除某个用户的所有权限,因为他已经离开了这个部门。

请注意:您当然可以针对每个用户组来维护 NTFS 权限,并且为每个用户设置权限通常不是个好主意。但是,常常需要针对单个用户设置权限,以下示例脚本不仅可以移除这些权限,并且通过一些小修改还能成为查找这些权限的审计工具。

以下是一个简单的示例脚本。通过设置 $Path$Filter,脚本可以扫描 $Path 文件夹以及它的所有子文件夹中所有访问控制项和 $Filter 字符串相匹配的项目。它只会处理非继承的访问控制项。

输出结果中将被删除的访问控制项标记为红色如果所有访问控制项和过滤器都不匹配,则显示绿色。如果脚本没有返回任何东西,那么表示您扫描的文件夹中没有直接的访问控制项。

$Path = 'C:\somefolder
$Filter = 'S-1-5-*'

Get-ChildItem -Path C:\Obfuscated -Recurse -ErrorAction SilentlyContinue |
  ForEach-Object {

    $acl = Get-Acl -Path $Path
    $found = $false
    foreach($acc in $acl.access )
    {
        if ($acc.IsInherited -eq $false)
        {
            $value = $acc.IdentityReference.Value
            if($value -like $Filter)
            {
                Write-Host "Remove $Value from $Path " -ForegroundColor Red
                $null = $ACL.RemoveAccessRule($acc)
                $found = $true
            }
            else
            {
              Write-Host "Skipped $Value from $Path " -ForegroundColor Green
            }
        }
    }
    if ($found)
    {
# uncomment this to actually remove ACEs
#        Set-Acl -Path $Path -AclObject $acl -ErrorAction Stop
    }
}

PowerShell 技能连载 - 移除选定的 NTFS 权限

http://blog.vichamp.com/2014/05/28/removing-selected-ntfs-permissions/

作者

吴波

发布于

2014-05-28

更新于

2022-07-14

许可协议

评论