如何使用 powershell 和 set-acl 跨文件夹结构和特定扩展复制权限?

如何使用 powershell 和 set-acl 跨文件夹结构和特定扩展复制权限?

Windows 中有一组文件夹和子文件夹,其中包含 *.dxf(多个)、*.add(多个)和 shapes.dat(每个文件夹 1 个)文件。这些是软件所需的文件夹结构的一部分。

我需要递归地将所有 *.dxf 和 *.add 的权限设置为只读,同时保留单个 shapes.dat 文件的写入权限。

在下文中关联所描述的内容似乎有帮助,但我看不到重构或启用我的操作的方法。

建议的命令是:

$newacl = get-acl "c:\yourfolder\samplefile.dxf"

get-childitem "C:\folder\folder\client files\" -Recurse -include "*.dxf" | set-acl -aclobject $newacl

我还发现了几个相关的问题:我尝试解决这个问题,但收效甚微(必须删除并从备份中恢复)。

任何尝试都将受到赞赏。

答案1

我认为您几乎已经了解了,因为我不太确定到底是什么出了问题,您应该修改您的Get-ChildItem语句。根据您的要求:

我需要递归地将所有 *.dxf 和 *.add 的权限设置为只读,同时保留单个 shapes.dat 文件的写入权限。

假设文件“samplefile.dxf”具有正确的权限,您的代码应该如下所示:

$newacl = Get-Acl "c:\yourfolder\samplefile.dxf"
Get-ChildItem -Path "C:\folder\folder\client files\" -Recurse -Include "*.dxf", "*.add" -Force | Set-Acl -AclObject $newacl

为了指出变化,我-Path在目标路径和-Force参数之前添加了参数,并添加了额外的"*.add"文件扩展名。您应该在 PowerShell 的管理会话中运行此操作以防止权限错误,这可能是根本问题。有关使用多个字符串作为命令过滤器的更多信息,Get-ChildItem请参阅此文章。如果这不起作用,请将-Verbose参数添加到命令中Set-Acl以查看失败的原因。

相关内容