如何以特定格式获取FileSystemRights?

时间:2017-10-12 11:14:15

标签: powershell formatting acl

我编写了一个小脚本,为我提供了某个路径及其所有子目录的访问ACL,并将其放在.txt中,但我需要另一种格式来创建一个更容易查看和访问的数据库。

部分输出如下:

Fullname S            FileSystemRights S AccessControlType
----------            ------------------ ------------------
C:\temp  ; ReadAndExecute, Synchronize ;             Allow; 

所以我需要输出看起来像这样:

Fullname S FileSystemRights S AccessControlType
---------- ------------------ ------------------
C:\temp  ;   ReadAndExecute ;             Allow;
C:\temp  ;   Synchronize    ;             Allow;

正如您所看到的,我需要个别行中的个人权利而不是堆叠在一起。

到目前为止,我所看到的是以下内容,也许它有所帮助(我遗漏了不重要的东西):

(Get-Acl $TestPath).Access |
    Format-Table -AutoSize -HideTableHeaders @{L="Fullname";E={$TestPath}},
        @{L="S";E={";"}}, FileSystemRights,
        @{L="S";E={";"}}, AccessControlType,
        @{L="S";E={";"}}, IdentityReference,
        @{L="S";E={";"}}, IsInherited,
        @{L="S";E={";"}}, InheritanceFlags,
        @{L="S";E={";"}}, PropagationFlags |
    Out-File $Out -Append -Width 500

function RecDirs {
    $d = $Args[0]
    $AktRec++
    $dirs = dir $d | where {$_.PsIsContainer}
    if ($AktRec -lt 3) {
        foreach($di in $dirs) {
            if ($di.FullName -ne $null) {
                (Get-Acl $di.Fullname).Access |
                    Format-Table -AutoSize -HideTableHeaders @{L="Fullname";E={$di.FullName}},
                        @{L="S";E={";"}}, FileSystemRights,
                        @{L="S";E={";"}}, AccessControlType,
                        @{L="S";E={";"}}, IdentityReference,
                        @{L="S";E={";"}}, IsInherited,
                        @{L="S";E={";"}}, InheritanceFlags,
                        @{L="S";E={";"}}, PropagationFlags |
                    Out-File $Out -Append -Width 500
            }
            RecDirs($di.Fullname)
        }
    }
}

RecDirs($TestPath)

1 个答案:

答案 0 :(得分:2)

以逗号分隔fzero属性,每个元素输出一行。你肯定希望FileSystemRights来编写输出文件。

Export-Csv