如何合并两个PowerShell命令以列出三级文件夹及其ACL
合并PowerShell命令:仅获取三级文件夹及其ACL
没问题,咱们把这两个命令整合起来很容易,核心就是先精准定位你要的三级文件夹,再逐个抓取它们的ACL就行。
直接合并的命令(保留你原有的层级筛选逻辑)
Get-ChildItem "I:" -Recurse -Directory | Where-Object {$_.FullName.Split("\").Count -le 4} | Get-Acl | Format-List
命令拆解说明
Get-ChildItem "I:" -Recurse -Directory:递归遍历I盘下的所有文件夹Where-Object {$_.FullName.Split("\").Count -le 4}:按照你原有的规则筛选出“三级”文件夹(通过拆分路径字符串的元素数量判断层级)Get-Acl:对每一个筛选出来的文件夹获取其访问控制列表(ACL)Format-List:用列表格式输出ACL详情,比默认的表格更易读
优化版:同时显示文件夹路径和ACL
如果想在输出里明确看到每个ACL对应的文件夹路径,可以稍微调整命令,把路径和ACL绑定在一起:
Get-ChildItem "I:" -Recurse -Directory | Where-Object {$_.FullName.Split("\").Count -le 4} | ForEach-Object { # 自定义输出对象,同时包含文件夹路径和ACL [PSCustomObject]@{ FolderPath = $_.FullName AccessControlList = $_ | Get-Acl } } | Format-List
小提示
如果发现层级筛选的结果不符合预期,可能是路径拆分后的元素数量计算和你实际的层级定义有出入。比如你认为的“三级文件夹”是I:\一级\二级\三级,那这个路径拆分后会得到5个元素("I:", "", "一级", "二级", "三级"),这时候把-le 4改成-eq 5就行,根据你的实际路径结构调整数值。
内容的提问来源于stack exchange,提问作者Daniel Gower




