备份和恢复权限

backup and restore permissions

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

$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
}

我真的很想扭转这个局面,但不知道如何从它导出的文件中重新应用权限。

列表格式对人类读者来说还可以,但它不太适合从文件中恢复数据。将每个文件夹的完整路径和 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
}