如何使用PowerShell复制NTFS权限?


要使用 PowerShell 更改、添加或删除文件或文件夹的安全权限,可以使用 **Set-Acl** 命令。如果您需要在目标路径上设置相同的权限,最佳方法是从另一个文件或文件夹复制权限。

例如,我想将源文件夹 **C:\Shared\** 的相同文件夹权限复制到目标文件夹路径 **c:\shared1** 路径。您可以使用任何目标路径,它可以是远程共享的 UNC 路径。

查看上面安全权限的差异,名为 Shared 的文件夹分配了一个额外的权限 (LABDOMAIN\Delta)。我们将使用源的 Get-ACL 和目标路径的 Set-ACL 通过管道将权限从一个文件夹复制到另一个文件夹。

Get-ACL C:\Shared | Set-Acl C:\Shared1

完成上述操作后,您可以检查目标路径的权限。

您可以看到添加了 Delta 用户权限,并且还复制了其他权限。如果用户已存在于源和目标位置,则目标用户的权限将被源用户的权限覆盖。

您还可以将源对象的 Get-ACL 输出存储到变量中,并将其分配给目标对象的 Set-ACL。Set-ACL 使用 -AclObject 参数来接收权限输入。

示例

$perm = Get-Acl C:\Shared Set-Acl C:\Shared1 -AclObject $perm

如果您需要在多个文件夹或文件或子文件夹上应用权限,则可以使用 **Get-ChildItem** 检索文件和文件夹,并按上述方式使用 Set-ACL 命令。

例如,我们有参考文件夹 **C:\shared** 的权限需要应用于目标对象。首先,我们将使用 Get-Acl 命令复制权限。

$perm = Get-Acl C:\Shared

其次,我们将使用 Get-ChildItem 检索文件/文件夹,然后在管道后使用 Set-ACL 命令。

示例

Get-ChildItem C:\Temp -Recurse | Set-Acl -AclObject $perm

在您为多个文件和文件夹设置权限之前,始终建议您使用 -**WhatIf** 参数来了解正在为哪些文件或文件夹应用权限。

示例

PS C:\> Get-ChildItem C:\Temp -Recurse | Set-Acl -AclObject $perm -WhatIf
What if: Performing the operation "Set-Acl" on target "Microsoft.PowerShell.Core\FileSystem::C:\Temp\Scripts".
What if: Performing the operation "Set-Acl" on target "Microsoft.PowerShell.Core\FileSystem::C:\Temp\vcredist_x64.exe".
What if: Performing the operation "Set-Acl" on target "Microsoft.PowerShell.Core\FileSystem::C:\Temp\W2K12-KB3191565-x64.msu".
What if: Performing the operation "Set-Acl" on target "Microsoft.PowerShell.Core\FileSystem::C:\Temp\WindowsSensor.exe".
What if: Performing the operation "Set-Acl" on target "Microsoft.PowerShell.Core\FileSystem::C:\Temp\WindowsSensor_7E3A9735FA064249A7005E9BE8CDD
What if: Performing the operation "Set-Acl" on target "Microsoft.PowerShell.Core\FileSystem::C:\Temp\Scripts\MyModules".
What if: Performing the operation "Set-Acl" on target "Microsoft.PowerShell.Core\FileSystem::C:\Temp\Scripts\MyModules\MyModules.psm1".

更新于:2020年9月28日

9K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告