You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何合并两个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

火山引擎 最新活动