使用PowerShell替换具有继承默认值的ACL

时间:2013-02-08 13:46:56

标签: powershell windows-server-2003 acl

我在用户目录中有许多文件夹,这些文件夹最终出现了错误的ACL。我想找到一种方法来使用PowerShell(或常规命令提示符,如果这更容易)删除现有的ACL并将其替换为它应从其父文件夹继承的内容。诀窍是只有拥有该文件夹的用户才能访问它(get-acl'。\ folder'返回“尝试执行未经授权的操作。”)。这些文件夹都位于Windows Server 2003 Std系统上。

2 个答案:

答案 0 :(得分:0)

试试这个:

#You have a textfile with FOLDER-paths
#$a = Get-Content d:\list.txt
#You have an array of FOLDER-paths
$a = @("d:\mytestfolder", "d:\my2ndtestfolder")

$a | % {
    #Take ownership to admin-group
    & TAKEOWN /F $_ /A /R /D Y
    #Reset acl to default recursively
    & ICACLS $_ /RESET /T /C
}

答案 1 :(得分:0)

事实证明,使用常规命令提示工具更容易实现。附带的脚本只需几行即可完成我需要的工作:

@Echo Off
@Echo Taking ownership of files in %1
takeown /f %1 /r /d Y /a > :nul
@Echo Restoring default ACLs in %1
icacls %1 /reset /t /c > :nul
@Echo Restoring ownership of files to %2
subinacl /file %1 /setowner=%2 > :nul
subinacl /subdirectories %1\*.* /setowner=%2 > :nul