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
以查看失败的原因。