备份和还原权限

时间:2016-01-31 21:01:23

标签: powershell acl directory

我目前正在使用以下脚本导出权限,获取文件夹的所有权,然后从该文件夹中删除所有权限。文件夹列表取自文本文件。

$InputFile = "C:\temp\Folders.txt"
$OutputFile = "C:\temp\FolderPermissions.txt"
$FolderList = Get-Content $InputFile

foreach ($Folder in $FolderList) {
    Get-Acl $folder | Format-List >>$OutputFile

    $acl = Get-ACL -Path $folder
    $acl.SetAccessRuleProtection($True, $True)
    Set-Acl -Path $folder -AclObject $acl

    $ACL = Get-ACL -Path $Folder
    $Rules = $ACL.Access | Where-Object {$_.IdentityReference -notmatch 'Admin'}

    foreach ($Rule in $Rules) {
        [void]$ACL.RemoveAccessRule($Rule)
    }
    Set-Acl -Path $folder -AclObject $acl
}

我真的希望能够扭转此问题,但无法弄清楚如何从其导出的文件中重新应用权限。

1 个答案:

答案 0 :(得分:1)

列表格式适用于人类读者,但它不适合从文件中恢复数据。将每个文件夹的完整路径和SDDL保存为CSV:

foreach ($Folder in $FolderList) {
    Get-Acl $folder | Select-Object @{n='Path';e={$Folder.FullName}}, Sddl |
        Export-Csv $OutputFile -NoType -Append
    ...
}

这应该允许您恢复this

等安全信息
Import-Csv $OutputFile | ForEach-Object {
    $acl = Get-Acl -Path $_.Path
    $acl.SetSecurityDescriptorSddlForm($_.Sddl)
    Set-Acl -Path $_.Path -AclObject $acl
}