【问题标题】:backup and restore permissions备份和恢复权限
【发布时间】:2016-05-09 05:57:25
【问题描述】:

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

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

我真的希望能够扭转这一点,但不知道如何从它导出的文件中重新应用权限。

【问题讨论】:

    标签: powershell acl directory


    【解决方案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
    }
    

    【讨论】:

    • 谢谢,我试过了,但它似乎只处理 txt 文件中的第一行。有什么想法吗?
    • @david 需要追加到输出文件(需要 PowerShell v3),否则文件将只包含最后一个文件夹的数据。查看更新的答案。
    • 谢谢,我会试试这个。 txt是否需要采用任何特定格式
    • 这工作伙伴,太棒了。谢谢你的帮助。你知道我怎样才能让它输出到一个单独的文件,用于它无法访问的任何文件夹吗?。
    • @david 请不要移动目标。如果您有新问题或后续问题:发布新问题。如果您发现某个答案解决了您当前问题中描述的问题:考虑accepting it
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 2011-07-02
    • 2021-08-14
    • 2014-07-24
    • 2013-12-03
    • 2019-06-30
    • 2014-08-10
    相关资源
    最近更新 更多