我目前正在使用以下脚本导出权限,获取文件夹的所有权,然后从该文件夹中删除所有权限。文件夹列表取自文本文件。
$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
}
我真的希望能够扭转此问题,但无法弄清楚如何从其导出的文件中重新应用权限。
答案 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
}