我正在试图在Powershell中编写一个脚本,它会recursion地查找文件夹,并根据文件夹名称replace文件夹上的ACL。
我已经拥有正确权限的文件夹。 这些我用作模板文件夹。
Folder1 Folder2 - Subfolder1 - Subfolder2
有成千上万的文件夹,都具有相同的名称,我想对所有的命名文件夹应用相同的权限集。 我一直在努力解决这个几个不同的方式,但我还没有find一个好方法来处理子文件夹和recursion。
以下是我尝试解决这个问题的第一种方法的示例。
$Prop = Get-Acl "Template\Subfolder1" $Engd = Get-Acl "Template\Subfolder2" foreach ($file in $(Get-ChildItem Folder2 -recurse)) { If ($_ = "Subfolder1") { set-acl $_ $Prop } If ($_ = "Subfolder2") { set-acl $_ $Engd } }
我越想写这个,我就越认识到它会越来越难。 我有几百个名为类似于Folder2 Folder3的文件夹….. FolderN,里面都有相同的文件夹结构和文件夹名称。 我只想简单的匹配文件夹名称,并根据名称分配一个预定义的ACL。
未经testing,但如何这样的事情:
$acls = @{}; Get-ChildItem Template | Where-Object { $_.PSIsContainer } | ForEach-Object { $acls[$_.Name] = Get-Acl $_.FullName ; } Get-ChildItem Folder2 -Recurse | Where-Object { $_.PSIsContainer -and $acls.ContainsKey($_.Name) } | ForEach-Object { Set-Acl $_.FullName $acls[$_.Name] ; }