我有部分代码:此时它在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
答案 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
将函数放在脚本的顶部并根据需要调用它。