使用通用名称将ntfs权限复制到特定文件夹

时间:2015-02-11 02:31:45

标签: powershell ntfs

我想从源文件夹= C:\script\banana复制Ntfs权限 到目的地= C:\script\architecture

知道目标目录是:

C:\script\architecture\A\G & C:\script\architecture\A\G1
C:\script\architecture\B\G & C:\script\architecture\B\G1
C:\script\architecture\C\G & C:\script\architecture\A\G1

所以我希望权限只能复制到G1文件夹

到目前为止我所拥有的是:

Get-Acl -Path C:\Script\Banana | Set-Acl C:\script\Architecture -Filter G1

但这只是将权限复制到架构下的所有内容

您是否能够指导我如何使用此命令

来定位G1文件夹

1 个答案:

答案 0 :(得分:0)

Set-ACL不是递归的。为了能够执行此操作,您可以保存C:\Script\Banana的ACL结果,然后使用Get-ChildItem搜索所需的文件夹。只要你有PowerShell 3.0

,这应该有效
$savedACL = get-acl "C:\script\banana"
Get-ChildItem "C:\script\architecture" -Directory -Recurse -Filter "G1" | ForEach-Object{
    $_ | Set-Acl -AclObject $savedACL -WhatIf
}

当您确定它定位到正确的文件夹时,请移除-WhatIf。如果你只有2.0那么一些小的改变应该完成同样的事情。

$savedACL = get-acl "C:\script\banana"
Get-ChildItem "C:\script\architecture" -Recurse -Filter "put" | Where-Object{$_.PSIsContainer} | ForEach-Object{
    $_ | Set-Acl -AclObject $savedACL -WhatIf
}