Powershell脚本循环检查安全权限的文件夹

时间:2014-06-13 14:32:20

标签: security powershell csv permissions acl

我有部分代码:此时它在CSV文件中显示为空。但是我需要一个命令来指定要查看的路径/文件夹,如何为此目的修改它。

Param(
    [String]$path,
    [String]$outfile = ".\outfile.csv"
)

$output = @()

ForEach ($item in (Get-ChildItem -Path $path -Recurse -Directory)) {

    ForEach ($acl in ($item.GetAccessControl().Access)){

        $output += $acl | 
            Add-Member `
                -MemberType NoteProperty `
                -Name 'Folder' `
                -Value $item.FullName `
                -PassThru

    }

}

$output | Export-Csv -Path $outfile -NoTypeInformation

1 个答案:

答案 0 :(得分:1)

好的,让我们这样做。我把它变成了一个函数,并删除了它的OutFile部分。如果要将其输出到文件,请将其输出到Export-CSV。如果要将其另存为变量,请将其分配给变量。这样简单。

Function Get-RecursiveACLs{
Param(
    [String]$Path=$(Throw "You must specify a path")
)

    $Output = GCI $Path -Recurse -Directory|%{
        $PathName=$_.FullName
        $_.GetAccessControl().Access|%{
            Add-Member -InputObject $_ -NotePropertyName "Path" -NotePropertyValue $PathName -PassThru
        }
    }
}

然后将它存储在如下变量中是一件简单的事情:

$ACLList = Get-RecursiveACLs "C:\Example\Path"

如果您愿意,可以将其输出到CSV:

Get-RecursiveACLs "C:\Example\Path" | Export-CSV "C:\Results.csv" -NoType

将函数放在脚本的顶部并根据需要调用它。